自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(25)
  • 收藏
  • 关注

原创 前缀和加Hash表解LeetCode 974&560

题目:974. 和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]思路:遇到区间题,我首先想到的就是区间DP,区间DP的复杂度是O(n^2

2020-05-27 15:24:14 346

原创 区间DP解LeetCode 5 最长回文子串

5. 最长回文子串给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:区间DP如果一个问题能够先计算小区间,再从小区间枚举到大区间,就可以使用区间DP在这道题中,我们可以使用一个二维数组,存储字符串区间是否是回文串dp[i,j]代表s[i....j]是否是回文那么状态转移就是:如...

2020-05-26 15:19:44 180

原创 二分搜索解LeetCode 287寻找重复数

287. 寻找重复数给定一个包含n+ 1 个整数的数组nums,其数字都在 1 到n之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。 只能使用额外的O(1) 的空间。 时间复杂度小于O(n2) 。 数组中只有一个重复的数字,但它可能不止重复出现一次。+思路:...

2020-05-26 15:10:14 190

原创 C++ sort函数

当我们要对一个数组进行排序时,C++为我们提供了Sort函数,简单且复杂度低复杂度:nlog(n)调用库函数:#include < algorithm >基本格式:sort(a1,a2,a3)第一个参数a1:要排序数组的起始地址第二个参数a2:要排序数组的终止地址第三个参数a3:自己定义的函数,用于自定义排列方式1.对一个普通数组进行排序int a[100]; //这里可以是int,double,char,string。不过string要注意系统默认的比较方式,结合实际情况

2020-05-25 19:26:05 648 1

原创 C++ 常用到的数据结构的使用 STL

1 string头文件: #include <string>使用#include <iostream>#include <string>using namespace std;int main(){ string a = "abcdf"; int k = a.find('r'); //寻找r在字符串中第一次出现的位置,从0开始,不存在返回-1; cout << k << endl; a.substr(1,3); .

2020-05-25 19:22:54 670

原创 图论 LeetCode面试题04.01 && 1334

面试题 04.01. 节点间通路节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1: 输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2 输出:true示例2: 输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]],

2020-05-25 10:51:57 240

原创 图论之最短路径 Dijkstra算法、超级源点、反向建边

1.最短路径问题最短路径问题:求一个结点到另一个结点的权值总和最小的路径对于无向图和有向图均是成立的比如下图,求从结点0到结点6的最短路径主要应用于:路径规划和工作任务规划2.松弛操作松弛操作是最短路径求解的核心松弛操作:针对从0->1的最短路径,从0到1的权值是5,此时我们尝试绕着从0->2->1,看下这样的走法所得到的权值是否小于直接从0->13.Dijkstra单源最短路径算法这个算法的前提是图中不存在负权边(权值为负数)算法

2020-05-24 22:47:41 1324

原创 图论之最小生成树 Prim算法和Kruskal算法

1.最小生成树问题最小生成树问题:一个图有V个顶点,找到V-1条边连接这V个顶点,使得总权值最小最小生成树问题通常是针对带权无向图、连通图如果图不是连通图:分别在每个连通分量上计算最小生成树---最小生成森林应用:电缆布线设计、网络设计、电路设计...

2020-05-24 20:00:58 1477

原创 图的广度优先遍历和最短路径

1.广度优先遍历的过程思想:先遍历当前结点的全部邻接结点,然后依次遍历相邻结点的全部相邻结点做法:使用队列将0结点加入到队列中,将0从队列取出将0结点还未遍历到的相邻结点入队将1结点从队列取出,将1结点还未遍历到的相邻结点入队(此时没有)将2结点从队列取出,将2结点还未遍历到的相邻结点入队(此时没有)将5结点从队列取出,将5结点还未遍历到的相邻结点入队:3,4将6结点从队列取出,将6结点还未遍历到的相邻结点入队(此时没有)将3结点从队列取出,将3结点还未遍历到的相

2020-05-23 10:52:37 2041

原创 图的深度优先遍历和计算连通分量

1.深度优先遍历过程过程:访问0: 访问0的第一个相邻结点1访问1:1的相邻结点为0,访问过了,结点1的全部相邻结点访问完毕,退回0接着访问0的下一个相邻结点2访问2:2的相邻结点为0,访问过了,结点2的全部相邻结点访问完毕,退回0接着访问0的下一个相邻结点5访问5:5的第一个相邻结点为0,访问过了,访问下一个结点3访问3: 3的第一个相邻结点为4访问4:4的第一个相邻结点为3,访问过了,下一个相邻结点5,访问过了,相邻结点6访问6:6的两个相邻结点都已经访问过了

2020-05-23 09:39:04 4232

原创 图的基础和表示

1.图的基础图是由节点和边组成的图的主要应用:交通运输、社交网络、互联网、工作安排、脑区活动、程序状态执行图的分类:有向图和无向图;有权图和无权图;连通图和非连通图图的连通性:如果从图的任意一个结点可以到另外任意一个结点,说明这个图是连通的,下面这个图不是完全连通的简单图:没有自环边和平行边的(一般题目处理的都是简单图,如果没有说明是简单图,需要处理一下)自环边:有自己到自己的一条路径平行边:代表两个节点之前有多条连接路径。比如交通运输:从A点到B点有多条路径

2020-05-22 21:38:36 601

原创 并查集 LeetCode 547

LeetCode547. 朋友圈班上有N名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B的朋友,B 是 C的朋友,那么我们可以认为 A 也是 C的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个N * N的矩阵M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 1:输入: [[1,1,0], [1,1,0], [0,0...

2020-05-21 19:24:54 198

原创 并查集

1.并查集基础并查集是一种很不一样的树形结构,用来解决一类连接问题连接问题问图上的两点是否相连连接问题的应用1 .网络中节点的连接状态 网络是一个抽象的概念:用户之间形成的网络2.数学中集合类的实现:合并两个集合、判断是否属于同一个集合等连接问题和路径问题的区别在于,连接问题只需要回答两个点是否连接,而路径问题需要将两个点连接的路径输出。所以连接问题比路径问题要回答的问题少并查集这个数据结构需要实现:对于一组数据,主要支持:union(p,q)将元素...

2020-05-21 19:05:38 767

原创 栈的使用 LeetCode 20&150

LeetCode20. 有效的括号给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "([)]"输出: false示例 2:输入: "{[]}"输出: true思路将左括号推入栈中,当遇到右括号时,查看是否与栈顶元素匹配,不匹配返回false,匹配将栈顶元素出栈。注意:匹配时要注意判断栈中是.

2020-05-21 09:59:21 158

原创 贪心 LeetCode 455&435

LeetCode 455. 分发饼干题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。示例 1:输入: [1,2,3],

2020-05-20 16:20:03 141

原创 什么情况下,使用记忆化搜索比动态规划更加方便???

动态规划是自底向上的,先处理子问题,然后再处理更大的问题。这样就需要知道子问题和更大的问题之间的联系。我们能够确定出子问题并且能够正确的求解它,从而从子问题推出要解决的问题的解。但是,如果当我们比较难确定出子问题是哪一个,比较困难的求出子问题的答案时,可以使用记忆化搜索以洛谷上的滑雪题为例对于这道题,我们没办法马上到达某个点的最长长度因此我们需要使用递归方法,并且使用记忆化搜索来进行优化思路使用递归计算出,到x,y点的最长滑坡长度遍历点(x,y)的上下左右四个点,如果一.

2020-05-19 16:59:39 321

原创 动态规划 0-1背包问题及优化

动态规划解0-1背包问题过程:依次计算数组中的每一个值:当容量C超过了当前物品的重量时,说明当前物品可以放入背包中,那么就要考虑是否将该物品放入背包中,如果放入背包中,当前背包的总价值就为memo[i-1][j-w[i]]+v[i],如果不放入背包中,当前背包的总价值就为memo[i-1][j],使用这两种情况的最大值更新数组数据代码:#include <iostream>#include <vector>using namespace ...

2020-05-19 16:48:55 992

原创 动态规划 状态的定义和状态转移 Leetcode198&213

在解动态规划题目的时候,我们要确定状态的定义和状态转移Leetcode198 打家劫舍题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号

2020-05-19 16:32:01 820

原创 动态规划之发现重叠子问题 LeetCode 343 整数拆分

当遇到一个问题,想要使用动态规划的基础是发现重叠子问题以LeetCode 343 整数拆分 这道题为例题目给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。思路我们解这道题,可以使用递

2020-05-19 15:38:18 371

原创 动态规划 LeetCode 70&120&64&279&300&322

LeetCode 70 爬楼梯题目假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶思路F(n)=F(n-1)+F(n-2) 斐波那契数列的应用代码#include <iostream>#include <vector>using namespace s..

2020-05-19 15:31:49 104

原创 从斐波那契数列引入动态规划

斐波那契数列定义 F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2) 求F(n)解法1:递归#include <iostream>using namespace std;int fib(int n){ if(n==0) return 0; if(n==1) return 1; return fib(n-1)+fib(n-2);}int main(){ cout<<fib(40)<<...

2020-05-19 15:06:41 282

原创 回溯法 LeetCode 17&93&131&46&77&39&79&200&130&51

树形问题LeetCode 17. 电话号码的字母组合给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].思路:遍历头一个数字可能对应的所有字符,选取一个字符,递归遍历剩下数字可能的选取的字符组合代码:class Solution {priv..

2020-05-14 10:55:03 234

原创 二叉树与递归 LeetCode 104&111&226&100&101&222&110&112&404&257&113&129&437&235&98

思路:一棵二叉树的最高深度是等于其左子树和右子树的最高深度的最大值+1代码:classSolution{public:intmaxDepth(TreeNode*root){if(root==NULL){return0;}intlDepth=maxDe...

2020-05-06 16:57:11 219

原创 Spring事务(2)使用Spring事务完成转账小例子

Spring支持两种方式事务管理:1.编程式的事务管理 在实际应用中很少使用;通过TransactionTemplate手动管理事务。2.使用XML配置声明式事务 开发中推荐使用;Spring的声明式事务是通过AOP实现的。转账小例子环境搭建第一步:新建数据库第二步:引入数据库、Spring、c3p0连接池的jar包;在src目录下引入spring的...

2020-05-02 15:23:28 512

原创 Spring事务(1)基本概念

1 事务概念事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。事务的特性:原子性、一致性、隔离性、持久性原子性是指事务是一个不可分割的工作单位。事务中的操作要么都发送,要么都不发生一致性指事务前后数据的完整性必须保持一致隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离持久性是指一个事务一旦被提交,它对数...

2020-05-02 14:33:10 390

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除