題目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:])