概念理解
题目
030-连续子数组的最大和
leetcode链接
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
方法一:动态规划
时间复杂度:O(n)
空间复杂度:O(n)
class Solution:
def FindGreatestSumOfSubArray(self, array):
# write code here
dp = array[:] #浅拷贝
for i in range(1,len(array)):
dp[i] = max(dp[i-1]+array[i],dp[i])
return max(dp)
方法二:动态规划(优化空间复杂度)
时间复杂度:O(n)
空间复杂度:O(1)
pre, res = 0, nums[0]
for i in nums:
pre = max(pre + i, i)
res = max(pre, res)
return res
052-正则表达式匹配
leetcode链接
请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。