- 博客(25)
- 收藏
- 关注
原创 腐烂的橘子
开始想的是用动态规划来写,但是发现不记录这轮腐烂的橘子会出问题,所以使用map做,用map记录本轮腐烂的橘子的信息,后面想了想,反正都是要记录的直接用另一个数字代表本轮腐烂的橘子不就好了0 - 空位1 - 好橘子2 - 坏橘子3 - 本轮将变坏的橘子再把将坏的橘子彻底变坏,哈哈最后判断下是否有永远坏不了的橘子...
2021-11-24 10:07:02 132
原创 矩阵-到最近0的距离 - 动态规划法
广度搜索法效率太低看了大佬动态规划思路之后,改用动态规划法动态规划法可以从四个方向考虑目标点到0距离左上、右上、左下、右下但是我们只需要两次遍历我的理解是我们从左上角第一个元素开始遍历的时候会从上往下依次改变每一行和每一行的每一个元素,所以到我们的目标点时,目标点的左方和上方已经改变好了,所以可以和左方和上方进行比较。我们从右下角第一个元素开始遍历的时候从下往上改变每一行和每一行的最后一个元素到第一个元素,所以到我们的目标点时,目标点的下方和右方已经改变好了,所以可以和下方和右方
2021-11-08 14:54:38 192
原创 合并二叉树 - 深度优化搜索、广度优化搜索、递归
递归方法一开始想的是先做值合并,判断分支属于什么条件再处理结果一开始两个空就给我整蒙了后直接改为判断传入进来的两个参数,分支在递归
2021-11-06 15:37:52 66
原创 岛屿最大面积 - 深度优化搜索、广度优化搜索、递归
1-陆地, 0-海水一开始要加判断,避免因为第一个点不是陆地二是和陆地相连的海水造成结果比预期大1
2021-11-06 09:54:08 88
原创 图像渲染 - 深度优化搜索、广度优化搜索、递归
题目类似油漆桶的效果,是把和目标相连的同像素的点一起改变他的像素一层一层的判断目标坐标四周三个条件1、月结判断2、是否和目标点像素相同3、和我们的新颜色不同,避免无限递归...
2021-11-06 09:19:09 84
原创 字符串的排列 - 哈希表,双指针
开始只想到出现的字符有没有,没考虑本身里面重复的现象修改之后,在哈希表里加上了每种字符出现的次数,比对我们窗口了的字母出现次数没有该字符或该字符出现的次数超了则证明这个窗口不符合条件根据情况改变left, right击败百分之五哈哈,空间占用也挺大的...
2021-11-04 16:00:29 48
原创 无重复字符的最长子串 - 哈希表、滑动窗口
滑动窗口其实就是对双指针的一个运用窗口右侧right自增判断有没有出现重复的字母,出现了则调整窗口左侧left位置信息保存到hashmap里面
2021-11-04 11:47:17 63
原创 链表的中间结点 - 链表、双指针
快指针走两步,慢指针走一步,判断是不是偶数判断走了多少步用到的链表类/** * val 值 * next 指向下一个ListNode */
2021-11-03 11:21:32 66
原创 反转字符串中的单词 - 双指针
* 例子* 输入:"Let's take LeetCode contest"* 输出:"s'teL ekat edoCteeL tsetnoc"开始想的是先根据空格切割再分别反转后组合,但是如果有两个或以上的空格连着的话就会出现空格缺失的情况,所以就整个字符串来处理,通过另一个角标来跳过空格和控制整个方法的执行,效率更高。把空格之间的字母看成一个组1、把key移动到每组第一个非空格位2、把left、right移动到key位3、把keyt移动到本组后第一个空格位4、把right移.
2021-11-03 09:48:37 77
原创 字符串反转 - 双指针,位运算
第一个简单的替换,是可以写成双指针,我使用i的式子替代位运算包括 且&、或|、异或^、取反~、右移>>、左移<<主要用了异或规则不相同结果为1,相同结果为0比如 1101 ^ 1011 = 0110再次异或相同的值会变回原来的 a ^ b ^ b = a1101 ^ 1011 ^ 1011 = 0110 ^ 1011 = 1101所以可以借助位运算异或进行替换s[i] ^= s[s.length - 1 - i];s[s.le...
2021-11-02 16:34:09 109
原创 两数之和,双指针+二分法
多加了二分法的使用,便于更快的压缩获取答案的空间但是需要注意只有两种情况能替换为mid值一是左半部分首尾和已经大于目标值,结果肯定在左半部分二是右半部分首尾和还是小于目标值,结果肯定在右半部分...
2021-11-02 11:28:49 81
原创 移动0,双指针
常规做法,不推荐,需要另开空间双指针一相当于遍历了新的数组,因为多加了挺多边界判断效率降低了双指针二相当于遍历原来数组,把非0改到了新数组,最后再把缺掉的0补上...
2021-11-02 09:54:12 51
原创 旋转数组-新数组/环形替换法
1、新数组法创建新数组,根据角标变化规律赋值2、环形替换法,看了很久才明白这个逻辑 是把数组的最后达到不需建立新数组实现值的变化,归位一个,记录一个有点像哈希排序的跳跃,不过这个不是到超过数组最大长度为止,而是继续加,加了之后取余再判断是否形成闭环了,是否需要到下一个环。 分为两种情况 一是只有一个环,到最后和开始位置重合,全部已经归位 二是不止一个环,在全部归位之前能形成闭环因为两种方式最终都是会移动相当于数组长度个...
2021-11-01 17:47:44 208
原创 有序数组平方排序
计算之后再排序,效率较低超时换了个思路,既然是有序数组,平方也有他的规律,从最小平方值考虑,时间复杂度降低从最小平方值考虑需要查找最小值所在的位置,影响效率,最后从绝对值大到小考虑...
2021-11-01 10:57:24 175
原创 二分法注意点
start+(end - start)/2相比于(start +end)/2更好边界问题到底要不要判断到start == end的情况力扣.278
2021-10-29 11:46:48 106
原创 斐波那契数列
递归法动态规划法答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1(不明白,说是防止大数)
2021-10-27 17:23:04 54
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人