题目1
题解1
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
n = len(digits)-1
digits[n] += 1
while n >= 0:
if digits[0] == 10:
digits[n] = 0
digits.insert(0,1)
break
if digits[n] >= 10:
digits[n] = 0
digits[n-1] += 1
n -= 1
return digits
题目2
题解2
class Solution:
def lengthOfLastWord(self, s: str) -> int:
lenght = len(s.split()[-1]) if s.split() != [] else 0
return lenght
题目3
题解3
class Solution:
"""
动态规划分析过程:
1. input: nums = [-2,1,-3,4,-1,2,1,-5,4]
2. output: 返回一个最大和的连续子数组
3. 子问题: DP[i] 表示到第i个元素上的最大序列和
4. 子问题间的递归关系: “猜测第i个元素在序列中”
DP[i] = DP[i-1] + nums[i] 如果第i元素在最大序列中
DP[i] = nums[i] # 如果第i个元素不在最大子序列中,则重新开始,当做第一个元素
最后对以上两种在与不在的两种情况取最大值, max(DP[i-1]+A[i], A[i])
5. 边界条件: nums[0] = 0
6. 满足后一个DP都是由前面一个DP得到,满足拓扑规则
7. 画表
i(下标) 0 1 2 3 4 5 6 7 8 9
nums(元素) -2 1 -3 4 -1 2 1 -5 4
DP(最大和) 0 -2 1 -2 4 3 5 6 1 5
"""
def maxSubArray(self, nums: List[int]) -> int:
DP = [None]*(len(nums)+1)
DP[0] = 0
for i in range(1,len(nums)+1):
DP[i] = max(DP[i-1] + nums[i-1], nums[i-1])
return max(DP[1:])