总结
455. 分发饼干
题目链接:
自己想
1.关键点在于有可能饼干数量多,也有可能孩子数量多,循环条件要确定好!
看完题解
完整代码
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
child_g = sorted(g, reverse=True)
cookit_s = sorted(s,reverse=True)
if not cookit_s or cookit_s[0]<child_g[-1]:
return 0
cookit_p = 0
child_p = 0
num = 0
while cookit_p < len(cookit_s) and child_p < len(child_g):
if cookit_s[cookit_p] >= child_g[child_p]:
num += 1
child_p += 1
cookit_p += 1
else:
child_p += 1
continue
return num
376. 摆动序列
题目链接:
自己想
看完题解
最大摆动序列问题,分了三种情况叙述,
第一种:存在平坡:解决的办法就是首先判断取平坡中的首选素还是尾元素,假设取尾元素,那么将等于判断加入前面。
第二种:首尾元素:默认加入尾元素,则初始为1
第三种:单调平坡:jutitrick就是将prediff=curdiff放在判断条件里,不要一直赋值,而是不同才赋值
完整代码
class Solution:
def wiggleMaxLength(self, nums: List[int]) -> int:
def is_between(n,a,b):
if a < n < b or b < n < a:
return True
else:
return False
if len(nums) == 1 or (len(nums) == 2 and nums[0] != nums[1]):
return len(nums)
if len(nums) == 2 and nums[0] == nums[1]:
return 1
i = 0
result = 1
prediff = 0
curdiff = 0
while i < len(nums) - 1:
curdiff = nums[i+1]-nums[i]
if (prediff >=0 and curdiff < 0) or (prediff<=0 and curdiff > 0):
result += 1
prediff = curdiff
i += 1
return result
53. 最大子数组和
题目链接:
自己想
看完题解
1.本质就是和要为正,才有意义
完整代码
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = nums[0]
count = 0
for i in range(0,len(nums)):
count += nums[i]
if result <= count:
result = count
if count <= 0:
count = 0
return result
题目链接:
自己想
看完题解
完整代码
在这里插入代码片