455.分发饼干
分析:优先让大饼干满足大孩子胃口,若当前饼干不能满足当前孩子胃口,就换下一个孩子
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
g.sort()
s.sort()
res = 0
index = len(s) - 1
for i in range(len(g)-1,-1,-1):
if index >=0 and g[i] <= s[index]:
res += 1
index -= 1
return res
376. 摆动序列
class Solution:
def wiggleMaxLength(self, nums):
if len(nums) <= 1:
return len(nums) # 如果数组长度为0或1,则返回数组长度
curDiff = 0 # 当前一对元素的差值
preDiff = 0 # 前一对元素的差值
result = 1 # 记录峰值的个数,初始为1(默认最右边的元素被视为峰值)
for i in range(len(nums) - 1):
curDiff = nums[i + 1] - nums[i] # 计算下一个元素与当前元素的差值
# 如果遇到一个峰值
if (preDiff <= 0 and curDiff > 0) or (preDiff >= 0 and curDiff < 0):
result += 1 # 峰值个数加1
preDiff = curDiff # 注意这里,只在摆动变化的时候更新preDiff
return result # 返回最长摆动子序列的长度
53. 最大子序和
关键:只要和出现负数,就重新开始计数
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
res = 0
tmp = 0
if max(nums) < 0:
return max(nums)
#只要出现和为负数,就重新开始计数
for i in range(len(nums)):
tmp += nums[i]
if tmp < 0:
tmp = 0
res = max(res,tmp)
return res