算法练习
文章平均质量分 60
跟着代码随想录刷算法题
supercool7
这个作者很懒,什么都没留下…
展开
-
代码随想录算法打卡 Day3
窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)原创 2024-03-15 13:51:52 · 380 阅读 · 0 评论 -
代码随想录算法打卡 Day1
二分查找最经典的就是分三种情况等于、大于、小于,等于就是开方出来正好是整数,直接return middle;小于可能符合情况,因为是返回整型,所以用res记录下来,但是还得看看有没有比现在的大并且平方小于x的情况,接着赋值eft=middle+1;大于的话一定不符合,直接看左边的right=mid-1。二分查找的意义在于通过二分将遍历的复杂度O(n)降低为O ( log 2 n ) ,故二分的优化意义大于对问题的解决意义。采用二分法去寻找左边界和右边界。原创 2024-03-12 16:38:06 · 393 阅读 · 0 评论 -
代码随想录算法打卡 Day2
【代码】代码随想录算法打卡 Day2。原创 2024-03-13 20:44:42 · 319 阅读 · 0 评论 -
代码随想录算法打卡 Day3
与上题的区别在于,本题是已知矩阵,按顺时针的顺序返回矩阵元素;而上题则是把元素按顺序放入矩阵中,返回矩阵。原创 2024-03-15 15:57:08 · 364 阅读 · 1 评论 -
代码随想录算法打卡-链表
双向链表比单向链表多个属性prev,指向上一个节点。快慢指针相差n个节点。原创 2024-03-17 11:40:04 · 404 阅读 · 1 评论 -
代码随想录算法打卡-哈希表
242.有效字母的异位词数组是一个简单的哈希表。题目中字符串只有小写字符,那么就可以定义一个数组,来记录字符串s里字符出现的次数(利用了字符的ASCII码可转换为整型)技巧:只涉及小写字母,考虑用数组作为哈希表代码实现为:383.赎金信与上题思路大同小异,只需注意判断哪个字符串的字符是可以多出的,哪个不行即可代码实现为:49.字母异位词分组代码实现为:438.找到字符串中所有字母异位词结合滑动窗口解决问题代码实现为:350.两个数组的交集II 是 Java 中用于复制指定范围的数组元原创 2024-03-19 15:15:54 · 544 阅读 · 0 评论 -
代码随想录打卡-字符串
坑:1、if(s.charAt(start)!=' ') //注意先后顺序,若交换顺序可能造成结尾出现多余空格的现象。2、start原创 2024-04-03 11:55:00 · 439 阅读 · 1 评论 -
代码随想录打卡-双指针法
【代码】代码随想录打卡Day7。原创 2024-04-07 11:40:19 · 333 阅读 · 0 评论 -
代码随想录打卡-栈与队列
232.用栈实现队列其中需要注意的点是,在进行pop()和peek()操作时,要先判断stackOut空了,再把stackIn的数倒进去代码实现为:225.用队列实现栈添加元素:栈 - push() 队列 - push()插到队列开头 offer()插到队列末尾查看元素:栈 - peek() 队列 - top()/peek()移除元素: 栈 - pop() 队列 - poll() 确定队列不为空也可使用pop()方法:使用两个Deque实现,其中一原创 2024-04-09 13:39:00 · 542 阅读 · 0 评论 -
代码随想录打卡-二叉树
int val;1、二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,先构造中节点!2、求不同二叉树的属性,一般用后序,但还是要具体问题具体分析!3、求二叉搜索树的属性,用前序,不然白瞎有序性了!原创 2024-05-09 21:48:55 · 731 阅读 · 1 评论 -
代码随想录打卡-回溯算法
本题其实可以不需要加终止条件,因为startIndex >= nums.size(),本层for循环本来也结束了,本来我们就要遍历整棵树。区别:没有数字个数的要求,且数字可以无限重复。区别:元素会有重复,但要求组合不能重复。剪枝:①和已经大于目标值,剪。方法二:不使用used数组。方法一:使用hashset。区别:包含重复元素【去重】方法一:使用used数组。方法二:(优化)使用数组。原创 2024-05-29 23:17:05 · 481 阅读 · 0 评论 -
代码随想录打卡-贪心算法
若为1,则叶子节点被覆盖了,叶子节点的父节点就不需要装摄像头了。注意:此时不是i和i-1进行比较了,因为这里返回的是int[][],需要更新上一个区间的记录,出现重叠,则上一个区间不再是i-1了!左右节点至少一个无覆盖---说明该父节点应加一个摄像头。左右节点至少存在一个摄像头---说明该父节点被覆盖。注意点:整数如何转换为字符串数组 --- 利用+"" 以及 split("")3、存在三种情景:左右节点均有覆盖---说明该父节点无覆盖且无摄像头。2、设置三个状态:0无覆盖、1有摄像头、2有覆盖。原创 2024-06-12 15:58:01 · 640 阅读 · 0 评论 -
代码随想录打卡-dp之背包问题
考虑到递推公式的特性,dp[j]必须初始化为一个最大的数,否则就会在min(dp[j - coins[i]] + 1, dp[j])比较的过程中被初始值覆盖。是 递归公式的基础。如果dp[0] = 0 的话,后面所有推导出来的值都是0了。下标非0的dp[j]初始化为0,这样累计加dp[j - coins[i]]的时候才不会影响真正的dp[j]本题题目中 只包含正整数的非空数组,所以非0下标的元素初始化为0就可以了。注意点:首先凑足总金额为0所需钱币的个数一定是0,那么。注意点:dp[0]一定要为1,原创 2024-07-02 16:27:55 · 458 阅读 · 0 评论 -
代码随想录打卡-股票问题
注意点:和上题的区别在于,本题的股票可以买卖多次!所以买入股票的时候,可能会有之前买卖的利润。可以多次买卖但每次卖出有冷冻期1天。2、不持有股票:其中又分为。买卖股票,问最大收益。原创 2024-07-09 15:16:57 · 173 阅读 · 0 评论 -
代码随想录打卡-动态规划之编辑距离总结篇
【代码】代码随想录打卡-动态规划之编辑距离总结篇。原创 2024-07-11 16:19:56 · 145 阅读 · 0 评论 -
代码随想录打卡-动态规划
并且要明确dp[i]的概念,是包含了i为下标的数的,所以要么是nums[i]加上前面的和,要么就是单独nums[i],也就是以nums[i]为一个新的开头。布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。注意:这里要求是连续的,所以不相等时的dp[i][j]不需要考虑了。注意:与上题区别是,本题不要求连续,故不相等的情况也要考虑。注意:与上题的区别是,本题不要求连续!注意:与上题的区别在于,这题要求连续。原创 2024-07-16 14:02:34 · 711 阅读 · 0 评论