类似文章
时间 | 情况 |
---|---|
2022年3月4日 | 【343】整数拆分(思路:这题做出来了,耗时30多分钟,medium题。这题又印证了我之前的理论:如果看题目感觉完全没思路,脑子乱成一团。那就先套框架,可以有效帮助我们解答。第一步,确认数组含义,也就是确认dp table的含义;第二步初始化,也就是base case;第三步两个for循环;第四步脑子里疯狂想如何由dp[0],dp[1],dp[2]…dp[i-1]推导出dp[i]。根据这套理论,我就是在看完题目后完全没思路的情况下,一步步写出来了,非常amazing。不过这题需要注意的就是2,3需要提前处理,因为dp[1],dp[2],dp[3]用来计算是不能直接根据状态转移方程来的,具体无法说清楚,我之所以可以找到这种特殊,大概是神来之笔?) |
2022年3月5日 | |
2022年3月6日 | |
2022年3月7日 | 【357】计算各个位数不同的数字个数(思路:没做出来,没找出dp[i]和dp[i-1]的关联,我发现对动态规划的题做熟练后,就是个数学归纳题,找规律。对于初始化,找状态,定义数组都是信手捏来。但是状态转移方程还得看能不能找到规律才行。有点难受,这规律有点难找到啊,dp[i] = dp[i - 1] + f;其中f初始化为9,m也初始化为9,f=f*m; m–;这属实不是正常人能找到的规律 ) 【10】正则表达式匹配(思路:不出意外,没做出来,毕竟是hard题,需要考虑的东西挺多的。但是有一说一,我的状态定义和dp数组的定义是正确的。dp[i][j]代表字符串s的前i个字符,和正则字符串p的前j个字符能否匹配。除此以外,我都错了,包括初始化,状态转移方程。有点烦,为啥初始化是直接定义dp[0][0] = true;按照我的理解,不应该是dp[i][0],dp[0][j]都得初始化为false吗?还有就是状态转移方程也是啰啰嗦嗦,能看懂代码,但是怎么想到这种代码的,还是不理解) |
2022年3月8日 | 【42】补充一下,冷静下来后,发现有种方法比我这种好多了,无论是代码量,耗时,还是理解难度都更胜一筹。也就是双指针法,除了内存使用的比我的方法多一点,基本没啥缺点,非常巧妙,学到了。 |
2022年3月9日 | 【32】最长有效括号(思路:这题没做出来,也是hard题。想了非常非常非常久,一晚上都过去了,还是没想到,一开始是尝试使用动态规划 ,然后发现没思路,而栈有了点思路。于是就一直在用栈在尝试解答,想的头皮都要炸了,但是代码改了又改,总是有一种或几种测试用例过不去,最后只能放弃,看题解去了。这题动态规划来写挺简单的,但是也要考虑的非常清晰才行。首先只有在当前字符为“)”时,才有可能是最长有效字符串的末尾字符,否则以当前字符串作为最长子串的一部分的话,这个最长子串的长度只会是0。那么我们只需要考虑s[i-dp[i-1]*2 - 1]的字符到底是“(”,还是“)”。如果是“(”,且i-dp[i-1]*2-1的值大于等于0,那么就可以直接+2,否则就是0) |
2022年3月10日 | 【45】跳跃游戏 II (思路:这题做出来了,medium题。这题对于身经百战的我,用动态规划的写法,基本上没有难度(虽然还是有非常多的medium题我还是做不出来,尴尬)。虽然分分钟做出来了,但是效率不高,第一次提交的耗时击败5%,内存击败20%。这我也理解,毕竟我的时间复杂度都快有O(n^2)了。遂优化,优化也没办法改变需要两个for循环的事实。最后看题目最大值为1000,所以加了个条件,内循环最多循环1000次,勉强减少了一半的耗时,但是还是差。看题解发现没有一个题解能够用动态规划写出好的复杂度。都是用的贪心。老实说,贪心我不熟,后面还得去学啊!!!!) |
2022年3月11日 | 以下为2022年10月26日开始的刷题记录,断更了7个月,在此续上一会,不会刷太久 |
2022年10月26日 | 【105】从前序与中序遍历序列构造二叉树(思路:这题做出来了,说实话不难,考的大部分是耐心和观察力,需要通过列出两个较长的例子,从而找出规律,并通过递归的方式表达出来,准确的说我其实取巧了,是通过一篇文章看到了这题,虽然没看解法,但是看到了文章中的函数签名;但是我还是觉得我挺强,嘿嘿。核心算法就是通过前序遍历找根节点,通过中序遍历找左右子树。重复如此最后返回构造的root,root.left = dfs(左子树函数签名),root.right = dfs(右子树的函数签名)) |
2022年3月13日 | |
2022年3月14日 | |
2022年3月15日 | |
2022年3月16日 | |
2022年3月17日 | |
2022年3月18日 | |
2022年3月19日 | |
2022年3月20日 | |
2022年3月21日 | |
2022年3月22日 | |
2022年3月23日 | |
2022年3月24日 | |
2022年3月25日 | |
2022年3月26日 | |
2022年3月27日 | |
2022年3月28日 | |
2022年3月29日 | |
2022年3月30日 | |
2022年3月31日 |