![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 93
unflyBrenda
这个作者很懒,什么都没留下…
展开
-
1.两个单链表是否相交(分为有环无环)
注:前面无环部分来自于https://blog.csdn.net/u010983881/article/details/78896293感谢作者Mlib的贡献后面部分为看左程云老师的课程的总结如何判断单链表是否存在环有一个单向链表,链表当中有可能出现“环”,就像题图这样。如何用程序判断出这个链表是有环链表?不允许修改链表结构。 时间复杂度O(n),空间复杂度O(1)。方...转载 2018-10-18 20:27:12 · 464 阅读 · 0 评论 -
leetcode 70 爬楼梯(easy java 动态规划)
一、题目分析爬楼梯的问题先考虑基本情况很快得到f(n)=f(n-1)+f(n-2)第一种情况是最后一次走一层,剩下就是和n-1层有关,第二种情况就是最后一次走两层,剩下就是和n-2层有关不用动态规划也可以,就是记录中间状态,累加代码class Solution { public int climbStairs(int n) { int...原创 2019-06-05 09:15:17 · 138 阅读 · 0 评论 -
leetcode 407 收集雨水(java 搜索)
二维数组存储的是每个单元的高度,求最多接多少体积的雨水首先想到的就是找到最低点 注意看后两个图,当水超过3的时候,可以从绿的的点流进内部所以可以想象内部现在的水的高度可以达到3,减去原来的体积,就是水的体积太机智了吧这个就是想象,想象水流进来的感觉,从内部往外面扩展,找不到什么规律要注意的一点就是,四周的点是没...原创 2019-06-19 15:53:18 · 531 阅读 · 0 评论 -
leetcode 473 火柴棍摆正方形(java 搜索)
就是在N个数里面找出四组数,使得每一组的和都是相等的优化很容易想到,就是先总和除以4取余,不为0说明不能成正方形,因为不能折断然后从大到小排序,每一次判断当前值和平均值的关系大于,就不能拼成正方形,直接false;等于,一条边完成摆放,进行下一条边;小于,记录这个火柴,继续搜,看有没有火柴长度和它加起来能够到达平均值,没有就falseclass Soluti...原创 2019-06-19 10:49:33 · 762 阅读 · 0 评论 -
LeetCode 126 词语接龙2 (搜索 java)
跟上一题127一样,但是额外要求要输出搜索的路径,而且是 所有的路径所以需要考虑将路径转换为有向图,然后将有向图中的最短路径全部枚举出来graph的话我们通过map<string,list<string>>来记录节点和从节点出发可以到达的其他节点,class Solution { public List<List<String...原创 2019-06-19 09:03:45 · 298 阅读 · 0 评论 -
leetcode 127 单词接龙(搜索 java)
就是给一个单词词典,给一个开始词汇和结束词汇,在词典中找出开始词汇转变成结束词汇的过程,求转变次数每次只能转变单词的一个字符可能会有多条路径可以到达,搜索问题可以用DFS BFS解决,DFS更适合搜索有多少条路径,BFS更适合搜索最小深度所以这个题最好是用BFS图的深度优先搜索:一个节点从他能够到达的未走过的节点中选择一个遍历,然后继续往后图的宽度优先...原创 2019-06-19 07:40:35 · 796 阅读 · 1 评论 -
LeetCode历程 By UnflyBrenda
目录一、链表(1)链表逆序、翻转链表(easy&&medium)(2)链表求交点(easy)(3)链表求环(medium)(4)链表划分(medium)(5)复杂链表的复制(深度拷贝)(hard)(6)排序链表的合并(easy&&hard)二、栈,队列,堆(1)使用队列实现栈&&使用栈实现队列(easy&&...原创 2018-11-30 12:52:28 · 294 阅读 · 0 评论 -
leetcode 174 地牢游戏(hard java 动态规划)
思路就是dp[i][j]表示为了达到右下角,至少有多少血量能够在行走过程中至少保持一滴血要从右下角开始向上推,因为只有在右下角知道最少还剩一滴血,然后向上推,最小血量javaclass Solution { public int calculateMinimumHP(int[][] dungeon) { if(dungeon.le...原创 2019-06-05 22:04:42 · 465 阅读 · 0 评论 -
leetcode 64最小路径和(java medium 动态规划)
由于前面已经做过了不少动态规划了,所以这个题很快能够找出状态转移方程dp[i][j]=Min{dp[i-1][j],dp[i][j-1]}+arrays[i][j]class Solution { public int minPathSum(int[][] grid) { if(grid.length==0) return 0;...原创 2019-06-05 21:27:47 · 246 阅读 · 0 评论 -
leetcode 300 最长上升子序列(java hard 动态规划)
主要思路还是dp[i]表示以i为结尾的最长上升序列的长度,要和dp[i]+1进行比较,j在0-(i-1)的范围class Solution { public int lengthOfLIS(int[] nums) { if(nums.length==0||nums.length==1){ return nums.length...原创 2019-06-05 21:02:56 · 900 阅读 · 0 评论 -
leetcode 120 三角形(medium java 动态规划)
题上说是从上往下,但是其实从下往上求路径是一样的,而且可以避免边界值问题因为从上到下dp[i][j]=min(dp[i-1][j-1],dp[i-1][j])但是从下到上dp[i][j]=min{dp[i+1][j],dp[i+1][j+1}}因为i+1 j+1是已经求过的,所以网上求是不会溢出的javaclass Solution { public ...原创 2019-06-05 20:25:15 · 271 阅读 · 0 评论 -
leetcode 322 找零钱(java medium 动态规划 一维dp )
首先先理解思路不能用暴力贪心,之前的找钱是1 2 5 10之类的生活中存在的钱,现在是任意未知货币现在如果是 1 2 5 7 10组合14就会出现问题,贪心依次是10 2 2 1,四张就不对了,应该是7 7 两张然后就是状态转移的公式推导dp[i]依赖条件是什么后面那个+1很好理解,i-1 i-2 等等,表示往前查看前面位置上需要的钞票数,+1就是加上相应的 ...原创 2019-06-05 12:30:45 · 696 阅读 · 0 评论 -
leetcode 53 最大子段和(easy java 动态规划)
一核心:跟以前的dp不太一样,这个需要换个思路假设dp[i]表示以i为结尾的最长子段的和 它和dp[i-1]的关系就是dp[i]=max(dp[i-1]+nums[i],nums[i])意思就是 包括前面i-1计算出来的子段和, 不包括前面的子段和,也就是只有nums[i]自己一个数class Solution { public int maxSub...原创 2019-06-05 10:54:53 · 201 阅读 · 0 评论 -
leetcode 198 打家劫舍(java easy 动态规划)
找到规律,推导状态转移方程分析子问题面对第i家房子,如果打劫,那么i-1家就不能进,那么最大财务就是前i-2家累计财富+第i家打劫的财富如果不打劫i家,那么在第i家门口徘徊的时候,身上的最大钱财就是前i-1家非法获得的财富所以就可以得到状态转移方程代码class Solution { public int rob(int[] nums) { ...原创 2019-06-05 09:58:31 · 250 阅读 · 0 评论 -
Leetcode 200 岛屿数量(搜索 java)
如何设计深度优先搜索(DFS)搜索到位置,进行一个标记,按照上下左右搜索,直到某一个点的深度遍历全都搜索完毕,岛屿数量加1小象学院给的是使用一个辅助数组进行标记,其实用原先的一个数组也是可以的,遍历中心位之后,如果中心位是1,count++将中心位置为非1的数字就好了,我看网上有置为0的,我们为了和水域也分开比较,我们将遍历过的土地置为1.我们如何设计宽度优先...原创 2019-06-18 11:17:52 · 920 阅读 · 0 评论