自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Day38: 322. Coin Change, 279. Perfect Squares, 139. Word Break

2、dp[j] 的含义为,长度为j的字符串可以或不可以被分割成字典中的单词。dp[j] = dp[j] or (dp[j - len(word)] and word == s[j - len(word): j])要点:我写的方法跟答案不一样,我是先根据n的取值范围建立了一个nums数组来存放物品。要点:用dp去做,在初始化的时候要注意这里求的是最少的数量,所以一开始的初始值设成最大值。做题情况:没做出来,没有用dp去做用了回溯。做题情况:没做出来,没想到方法。要点:1、可以用回溯算法做。

2024-07-31 16:39:48 158

原创 Day37: 528. Coin Change II, 377. Combination Sum IV

Solution: 这题和前面几题不同的是coin可以被重复使用,所以要从前往后遍历背包。以及dp公式是求方法的总数,所以要把前面所有的方法都加起来。要点:这题是求排列数,所以要先遍历背包,再遍历物品。求组合:先遍历物品,再遍历背包。求排列:先遍历背包,再遍历物品。

2024-07-31 14:55:50 250

原创 Day34: 62. Unique Paths, 63. Unique Paths II

解题思路:和上一题非常像,但是在设置初始值时,如果在最上面一行和最左边一列遇到了障碍,则要把障碍的那一格和后面的格子初始值都设为0。时间复杂度:O(m * n)空间复杂度:O(m * n)时间复杂度:O(m * n)空间复杂度:O(m * n)题目难度:Medium。题目难度:Medium。

2024-07-19 06:39:47 264

原创 Day33: 509. Fibonacci Number, 70. Climbing Stairs, 746. Min Cost Climbing Stairs

做题情况:初始值设错了,dp[0] 和 dp[1] 的花费都应该是0,因为可以从第0和第1级台阶出发,都不需要花费。做题情况:没有排除coner case(n = 0的情况)二刷动态规划了,希望可以比第一遍的时候刷得好。解题思路:DP,和爬楼梯问题没啥区别。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)

2024-07-19 05:30:19 289

原创 Day31: 56. Merge Intervals, 738. Monotone Increase Digits

3、后面的元素每一组的左边届都与res数组最后一组元素的右边界进行比较:若重叠,更新res数组中最后一组元素的右边界值;若不重叠,将这组元素插入res数组。解题思路:从后往前遍历每一位数,如果前一位数大于当前位数,则将前一位数减1,后面所有位数都改成9。时间复杂度:O(nlogn) 排序所需。空间复杂度:O(logn) 排序所需。时间复杂度:O(N),N为数字的长度。做题情况:用的暴力解法,超时了。1、排序,尽可能让空间重叠。题目难度:Medium。题目难度:Medium。空间复杂度:O(N)

2024-07-17 08:13:01 295

原创 Day30: 452. Minimum Number of Arrows to Burst Balloons, 435. Non-overlapping Intervals, 763

2、第二遍遍历开始分割字符串,每遍历到一个字母就更新最远的边界值,直到有一个字母的下标与之前记录的最远边界值一致,就说明可以分割成一个区间,记录下这个区间。2、从前到后遍历气球,如果前后两个气球重叠,则更新气球重叠的边界;如果前后两个气球不重叠,则说明要多射一箭。1、第一遍遍历记录每一个字母最后出现的位置,用哈希表储存起来。解题思路:和上一道题几乎一模一样,就是边界的更新不同。做题情况:没做对,没有正确更新两个气球重叠的边界。做题情况:没想到方法,没做出来。题目难度:Medium。题目难度:Medium。

2024-07-15 16:05:32 284

原创 Day29: 134. Gas Station, 135. Candy, 860. Lemonade Change, 406. Queue Reconstruction By Height

做题情况:这题之前做过,看了一下答案,还是蛮简单的。先处理从左到右的情况,再处理从右到左的情况,这样就能保证每一个胃口比两边孩子都大的孩子有更多的糖果。做题情况:好巧妙的解法,根本想不出来!把身高从大到小排序,然后直接按照身高顺位插入队列就行了,好厉害!但是我是用一个list来存储每种零钱的数量,其实只需要两个整数变量就行了。做题情况:没有思路,直接看了答案。贪心算法的题解都好巧妙啊,很难想到。题目难度:Medium。题目难度:Medium。

2024-07-12 14:55:25 154

原创 Day28: 122. Best Time to Buy and Sell Stock II, 55. Jump Game I/II, 1005. Maximize Sum Of Array

做题情况:没有想到,直接看答案的。要算上一步和这一步加起来的行动范围,如果一步没法抵达终点就加一步。做题情况:一开始没有想到全都翻转为正数之后,k依然大于0的情况。看了答案之后写出来了。做题情况:没有想到,直接看答案了。算每一步的行动范围,看看能不能覆盖到最后一步就行。做题情况:没有想出来,看了解法,只要把第二天涨的情况加起来就行。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-07-11 06:12:43 169

原创 Day27: 455. Assign Cookies, 376. Wiggle Subsequence, 53. Maximum Subarray

做题情况:一开始没有思路,不知道怎么删除元素,看答案了。这题需要考虑的情况很多:1、首尾元素(res的初始值要设为1),2、有平坡的情况(只记录一边的平坡),3、单调坡中有平坡的情况(当新的峰值出现之后再去更新preDiff)。做题情况:没有想到解法,看的答案。解法:如果目前相加的和已经是负数,那么任何数加上负数都会越来越小,就把之前的子数列舍弃掉,重新开始加后面的数。我是用小饼干优先分给胃口最小的孩子来做的,也可以把大饼干优先分给胃口最大的孩子。题目难度:Medium。题目难度:Medium。

2024-07-11 05:36:22 111

原创 Day12. 150. Evaluate Reverse Polish Notation, 239. Sliding Window Maximum, 3212. Top K Frequent Elem

做题情况:看题目要看晕了。想到用栈的做法,但是没想要要把计算过程中每一步的结果append到栈里面。做题情况:做得脑壳疼。看答案看得也脑壳疼。每次做hard题都是大折磨,折磨。做题情况:也有点脑壳疼的。最小堆和最大堆的题目之前做得很少。这三题做得我真的是,生无可恋。题目难度:Medium。题目难度:Medium。

2024-07-09 15:14:42 171

原创 Day10: 232. Implement Queue Using Stacks, 225: Implement Stack using Queues, 20. Valid Parentheses

做题情况:这题之前做过,方法还记得,通过栈的结构存储左括号,碰到右括号的时候检查栈顶是不是对应的右括号。做题情况:看了讲解之后写的。上数据结构的时候没有好好听,感觉自己栈和队列学得好差,好好刷一下相关的题吧。不过要注意检查栈是否为空,从空栈里pop出元素的话会出错。做题情况:看了答案之后写的。这一题和上面那一题都不是很熟悉,下次还要再做一下。

2024-07-09 13:03:47 130

原创 Day9. 151. Reverse Words in a String, 28. Find the Index of the First Occurrence in a String, 459. R

做题情况:没做出来。答案的方法很巧妙,把字符串重复两次,然后去掉首尾字母,如果字符串是由重复的组合组成的,那么首位相连的地方还能找到一次原来的字符串。做题情况:要先将字符串转化成列表再进行双指针的操作。做题情况:KMP算法的做法不会,写了暴力的方法。题目难度:Medium。

2024-07-09 03:25:26 163

原创 Day26: 491. Non-decreasing Subsequence, 46. Permutations, 47. Permutations II

做题情况:没有做出来,去重没有去对。看了答案之后还是有点糊涂。本题去重的关键是每一层中已经使用过的元素不能再次使用,但是对于每一个分支,使用过的元素是可以再次使用的。这题过几天还要再做一下。去重没有去对,看了答案之后自己写出来了。一开始没有对nums数组进行排序然后去重。其实还是很简单的一道题目。做题情况:还算顺利。最最经典的排列问题。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-07-06 06:20:48 216

原创 Day8: 344. Reverse String, 541. Reverse String II

做题情况:方法是对的,但是没有把string转换成list再进行reverse的操作。

2024-07-05 13:55:02 134

原创 Day7: 454. 4SumII, 383. Ransom Note, 15. 3Sum, 18. 4Sum

做题情况:用哈希map和字典做出来了。这题第一次做的时候想了好久,第二次做发现很简单。学了一个defaultdict的用法,defaultdict可以避免键不存在的情况,lambda :0将未显示的键的默认的值都设置成0。做题情况:和上一题的做法一样,但一开始写的时候在剪枝的地方出错了,导致没有把全部的情况都容纳进去,后面debug之后就对了。做题情况:顺滑,我用的字典做为哈希表。针对字母的题目也可以用长度为26的list来做。做题情况:前几天刷的忘记写了。好像是一开始想用map做,没有想到用双指针。

2024-07-05 13:43:23 136

原创 Day6: 242. Valid Anagram, 349. Intersection of Two Arrays, 202. Happy Number, 1. Two Sum

做题情况:这么简单的题目,居然没有做出来,方法是知道的,但是在数的处理上没有写对。我用的集合,直接return了。也可以用哈希表,最后用集合储存结果。做题情况:这题做过太多次了,顺滑。做题情况:用哈希表,顺滑。

2024-07-03 06:52:34 195

原创 Day24: ​​​​​​​78. Subsets, 93: Restore IP Addresses, 90: Subsets II

做题情况:写得很混乱,写不对。判断分割段是否为有效分割的条件没有写对。答案是另写一个单独的函数来判断的,这样子写会清楚很多。做题情况:一开始没做对,收集子集的位置和判断终止条件的位置放错了,导致集合的最后一个元素没有被收集进来。做题情况:一开始没做出来,忘记用used数组了,后面nums数组忘记排序了。这题还是非常不错的。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-07-02 15:27:22 220

原创 Day4: 24. Swap Nodes in Pairs, 19. Remove Nth Node From End of List, 160. Intersection of Two Linked

做题情况:这题之前刷过,方法是记得的,但是做的时候没有处理好非环形链表的情况。如果fast和slow指针永远不相交,那就是不是环形链表,return None。做题情况:一开始没做出来。没有想到要求两个链表长度的差值。看了题解之后做,没有返回链表,而是返回了相交的值。做题情况:比较顺利,在while循环的条件这里一开始没有写对。重点是要创建一对快慢指针。关键是用temp保存临时节点。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-07-02 12:57:50 134

原创 Day23: 39. Combination Sum 40. Combination Sum II 131. Palindrome Partitioning

做题情况:去重没有去好,树形结构中每一层不能有重复的元素,同一个树枝上可以有重复的元素。做题情况:这题做过很多遍了。用for循环和startIndex来检查每一个切割点。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-06-28 14:30:14 146

原创 Day22: 77. Combinations 216. Combination Sum III 17. Letter Combinations of a Phone Number

做题情况:基本上全都写出来了,但是startIndex变量没有正确使用,在for循环中,递归的回溯函数中startIndex应该是i + 1,而不是startIndex + 1。做题情况:一开始没有做出来,这题跟常规的回溯不太一样,是在两个集合里面取元素,不是同一个集合。做题情况:写的是对的但是没有做剪枝操作,导致最后提交超时了。题目难度:Medium。题目难度:Medium。题目难度:Medium。

2024-06-28 09:31:18 136

原创 Day3: 203.移除链表元素 707.设计链表 206.反转链表

这题的关键是建立一个dummy_head,然后while循环的终止条件要注意。做题情况:用temp存储cur.next,构造一个pre指针用于反转链表。做题情况:这题第一次做的时候头很大,第二次做就好了。做题情况:好久不刷Listnode的题目了。题目难度:Medium。

2024-06-27 14:25:43 185

原创 Day2: 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

做题情况:做出来了,用的双指针,但是在结果中存放元素时用的insert方法,导致运行速度很慢,《代码随想录》中是先用res = [float('inf')] * len(nums)建立结果数组,这样子运行速度会快一些。做题情况:思路是对的,但是在滑动窗口left和right两个指针的处理上不是很清晰,看了题解之后自己可以写。做题情况:很绕的一道题目,之前就觉得很绕,现在要自己完全写对还是很难。题目难度:medium。题目难度:medium。

2024-06-27 07:15:07 106

原创 Day1| 704. Binary Search, 23. Remove Elements

刷题过程:之前刷过,很快就刷出来了,注意边界条件:while left <= right,以及左闭右开、左闭右闭等情况。刷题过程:之前刷过,也很快就刷出来了,简单题现在刷得还可以,基本都能刷出来。

2024-06-05 23:33:34 180 2

空空如也

空空如也

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

TA关注的人

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