CSMania

You may say I'm a Programmer, but I'm not the only one

代码随想录算法训练营第六十天| 动态规划

84.柱状图中最大的矩形 最后一天了,又是一道困难题。。。太难了

代码随想录算法训练营第五十九天| 动态规划

503.下一个更大元素II 并没会 class Solution { public: vector<int> nextGreaterElements(vector<int>& nums) { // 拼接一个新的nums vector<int> nums1(nums.begin(), nums.end()); ...

代码随想录算法训练营第五十八天| 动态规划

739. 每日温度 看完Carl的视频讲解写出来的。自己写的大概都对,但是忽略了两点: 应该写先当前数值小于栈最顶端的情况,然后再写剩下的话会比较方便。(或许)? 当前数值小于栈顶数值的时候,应该用while loop把该记录的值记录在result里,然后再push目前的值。我自己写的时候把push也放到了while loop里了,这样就添加了多遍当前的值的index。 c...

代码随想录算法训练营第五十六天| 动态规划

647. 回文子串 这道题看了Carl的题解明白了。本题一大重点是确定遍历顺序:因为我们是一步步 从小到大来i到j之间是不是回文串,所以我们就不能从小到大 从左到右来遍历了。需要i从最大值,然后j从最小值,从左往右遍历。然后必须确保j要小于等于i才行。这个我学的不是很扎实,还需要再做一遍。 class Solution { public: int countSubstrings(st...

代码随想录算法训练营第五十五天| 动态规划

583. 两个字符串的删除操作 耶!自己独立做出来一道!这回自己是理解了什么时候dp[i][j] = max(dp[i-1][j],dp[i][j-1])什么时候dp[i][j] = dp[i][j-1]了。虽然说自己提交的时候错了几回,但是自己搞明白了怎么回事了。 class Solution { public: int minDistance(string word1, stri...

代码随想录算法训练营第五十四天| 动态规划

392.判断子序列 跟昨天做的两道题也很像,用昨天的代码也可以写出来。我自己又重新手写了一遍,出现了一个小马虎,就是在最后DP的值是否等于 s的长度的时候,我写成了dp[s.length()-1][t.length()-1],但其实应该用dp[s.length()][t.length()],因为在这道题里我们设了一个比s和t都大一个的二维数组。 class Solution { public...

代码随想录算法训练营第五十三天| 动态规划

1143.最长公共子序列 这道题其实跟昨天晚上做的那道题很像。整体的框架我写出来了,但是我没有想明白怎么让后续的值延续当前的状态,也就是说如果这个数相等,那么后面的数是不是也应该遵循这个数的值。看了Carl的题解,才明白应该怎么延续整个值,其实就是dp[i][j] = max(dp[i][j-1],dp[i-1][j]),也就是说让目前两个数组不相等时所得到的二维数组的值为左边和上面的最大值...

代码随想录算法训练营第五十二天| 动态规划

300.最长递增子序列 这道题我自己想出来了一些。但是还是看的题解才明白怎么做。 本题的dp是当前数可做成的最大的子序列有多长。 这道题的思路就是外循环遍历每个数,内循环遍历从0到当前的数之间 有没有比当前数小的数,如果有,取这些数里面dp[j]值最大的再加一。然后最终这题的结果取的不是dp[size-1],而是dp数组里最大的数。这一点和之前的题也不太一样,之前的题都是取最后一个值。 ...

代码随想录算法训练营第五十一天| 动态规划

309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 太麻烦了,不想再做股票的题了。

代码随想录算法训练营第四十九天| 动态规划

既然是两道困难题,开摆 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV