![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
Sherlockkkkz
学习一时爽,一直学习一直爽
展开
-
Leetcode-942. 增减字符串匹配
力扣又名语文阅读理解。。。。。看了半天才明白,题目问的是给一个字符串,反推列表数字的顺序。。。贪心策略:有四种字母排序的组合:“I D”“I I”“D I”“D D”分析四种情况,发现当出现“ I ”时,对应着最小的数字;出现“ D ”时,对应着最大的数字。但是因为最后的排序列表长度比字符串长1,所以特殊处理最后一个字母。代码如下:class Solution: def diStringMatch(self, s: str) -> List[int]: .原创 2022-04-04 11:43:29 · 286 阅读 · 0 评论 -
Leetcode - 976. 三角形的最大周长
贪心算法,先排个序,选最大的三条边看满不满足三角形条件(两边之和大于第三边),若满足直接输出,若不满足则全体往后挪一位,继续判断。代码如下:class Solution: def largestPerimeter(self, nums: List[int]) -> int: nums = sorted(nums, reverse = True) a, b, c = nums[0], nums[1], nums[2] ##先选出最大的三条边 .原创 2022-04-01 16:24:24 · 241 阅读 · 0 评论 -
Leetcode-LCS 01. 下载插件
真是球球出题人把语文学明白,看了半天没看懂题目,看了评论区才知道原来升级带宽也占了一分钟。。。。费了九牛二虎之力把题目理解了后,现在来浅浅分析一下:dp[ i ] 意为第 i 分钟最多完成几个,so,dp[ i ] 主要依赖于第 i -1 个加上现有的带宽还是第 i -1 分钟升级带宽(v*=2)之后的值;** 递推式: dp[ i ] = max { dp[ i - 1]+ v ,{dp [ i - 1] + 2*v , v *= 2} } **代码如下:class Solution: ..原创 2022-04-01 15:47:55 · 91 阅读 · 0 评论 -
Leetcode-LCP 07. 传递信息
这题可以用两种思想来做,一种是DP(动态规划),另一种是DFS(深度优先)。方法一:DP(动态规划)dp[ i ][ j ] 代表传到第 i 轮传到 j 有几种方式。 所以dp数组的大小应该为 (k+1)×n (还有个第0轮)。又因为relation数组中包含的是数组,所以应该遍历的是relation中的数组设为 r ,relation是个图,画出来如下图:[ 0, 2 ], [ 2, 1 ] 很明显,从 0 到达 1 要经过 2;所以递推式为:dp[ i ][ relation ..原创 2022-04-01 10:32:25 · 326 阅读 · 0 评论 -
Leetcode-买卖股票的最佳时机 II
经过分析,此题适用贪心策略:越早卖出获得的总利润越大。所以算法思想是:在第 i 天买入,若第 j 天(j > i)prices[j] - prices[i] > 0, profit += prices[j] - prices[i]。class Solution: def maxProfit(self, prices: List[int]) -> int: n = len(prices) sum = 0 for i in range.原创 2022-03-30 15:10:10 · 270 阅读 · 0 评论 -
Leetcode-Z 字形变换
找规律:数学规律找到了,接下来的难点就是代码实现。一共需要两层循环,外层循环为n行,内循环为字符串长度;python当中字符串是可以直接相加的(字符串相加就是拼接);注意观察奇数行号的规律是成波动性的,两个波动数相加刚好为n+2,所以需要用一个flag标记当前波动位置;当循环到第0行和最后一行时,规律显然是一样的,所以单独处理。代码如下:class Solution: def convert(self, s: str, numRows: int) -> str: ..原创 2022-03-27 12:09:06 · 274 阅读 · 0 评论 -
Leetcode-最长回文子串
先是回文子串的判断(详见上一篇:Leetcode-回文子串),只要跟着循环记录下当前最长的回文串位置就好了,但是在Python中需要提前声明记录最长回文子串的终止位置为0,因为最后需要用来判断最长回文串是否大于一,否则返回字符串第一个位置。class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) ma = 0 ## 记录当前最大回文串长度 g.原创 2022-03-26 16:20:48 · 1478 阅读 · 0 评论 -
Leetcode-回文子串
虽然一开始看题目就感觉是用动态规划,但是好像找错递归式了。。。。自以为看透了题目的本质,结果居然是暴力解法。。。。。。class Solution: def countSubstrings(self, s: str) -> int: c = [[0 for i in range(len(s)+1)]for i in range(len(s)+1)] for i in range(1,len(s)+1): for j in rang.原创 2022-03-26 15:03:26 · 397 阅读 · 0 评论