DP
fairy净
这个作者很懒,什么都没留下…
展开
-
leetcode300 最长上升子序-----LIS
''' 区分LCS,LCS是比较两个字符串的最长公共子序列,LSI是一个字符串的最长上升子序列。 ''' def lengthOfLIS(nums): ''' 思路:cache[i]表示第i个元素时的最长上升子序列的长度, (因为要走到序列的最后才能直到最长的子序列,所以i表示末尾元素,j表示末尾元素前面的元素) 时间复杂度O(n*n) 1. 子序列是可以不连续...原创 2018-09-08 19:31:55 · 190 阅读 · 0 评论 -
leetcode 718最长重复子数组【连续】 - DP&LCS leetcode583. 两个字符串的删除操作 最长重复子序列【不连续】
''' 最长重复子数组 子数组是连续的 类似LCS ,LCS是不要求连续的 递推式: A[i] = B[j]时:memo[i][j] = memo[i-1][j-1] + 1 第一行或第一列,A[i] = B[j]时:memo[i][j] = 1 其他情况 memo[i][j] = 0 LCS 递推式:字符串A B A[i] = B[j]时:LCS[i,j] = LCS[i-1,j-...原创 2018-09-08 14:02:43 · 558 阅读 · 0 评论 -
编辑距离--Levenshtein 【leetcode 72】
def levenshtein(s,t): ''' 递推式:默认权重为1 初始化条件:第0行第0列分别为[0-m,0-n] if s[i][j] == t[i][j] :memo[i][j] = memo[i-1][j-1] if s[i][j] != t[i][j] :memo[i][j] = min(memo[i-1][j-1]+1,memo[i][j...原创 2018-09-08 13:14:13 · 180 阅读 · 0 评论 -
leetcode263 & 264丑数
leetcode264 def nthUglyNumber(self, n): """ 找到前n个丑数,每次新增到丑数比之前丑数数组的最大值都大,保证这一点,再确保每个与2 3 5 相 乘的数不重复,定义三个指针。 """ if n == 1: return 1 ...原创 2018-10-04 21:24:23 · 272 阅读 · 0 评论 -
leetcode 120. 三角形最小路径和
def minimumTotal(triangle): """ 从下往上递推 一维动态规划 先保存最后一行元素作为初始值,再往上依次递推, 递推式:tmp[j] = min(tmp[j],tmp[j+1])+triangle[i][j] 其中i表示第i行,从n-2行开始,三角形有规律每行元素的个数=第几行+1(0行开始) """ n = l...原创 2018-10-05 19:51:32 · 106 阅读 · 0 评论 -
letcode 198 & 213 强盗抢劫
198 从前往后递推 def rob(nums): """ :type nums: List[int] :rtype: int 198 递推式:dp[i] = max(dp[i-2]+nums[i],dp[i-1]) """ if not nums: return 0 ...原创 2018-09-19 10:31:14 · 174 阅读 · 0 评论 -
leetcode10
def isMatch(s, p): m,n = len(s),len(p) dp = [[False for i in range(m+1)] for j in range(n+1)] dp[0][0] = True for i in range(0,n): for j in range(1,m): if s[j] == ...原创 2018-10-20 19:08:07 · 338 阅读 · 0 评论 -
leetcode53 最大子序和 &leetcode 152 乘积最大子序列【都要求是连续的】
leetcode53 def maxSubArray(self, nums): """ 最大和的连续子数组(子数组最少包含一个元素),返回其最大和 """ max_num = -2147483648 sum = 0 for j in range(len(nums)): sum...原创 2018-10-27 05:05:07 · 185 阅读 · 0 评论 -
leetcode5 最长回文子串
''' 递推式: 1 一般: S[i+1] == S[j-1] and j>i and j-i == len(S[i+1,j-1]) 2 初始化dp矩阵对角线的值为 true,相邻两个元素相等时dp[i][i+1] 为true ,初始化回文串起始位置和长度。 ''' def longestPalindrome(s): n = len(s) if s == '': ...原创 2018-10-27 12:06:22 · 167 阅读 · 0 评论