class Solution(object):
def findContentChildren(self, g, s):
"""
:type g: List[int]
:type s: List[int]
:rtype: int
"""
g.sort()
s.sort()
res = 0
j=0
if not s:
return 0
i=0
while(i<len(g)):
if g[i] <= s[j] :
res+=1
j+=1
i+=1
else:
j+=1
if j== len(s):
break
return res
排序+双指针
class Solution(object):
def wiggleMaxLength(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
if n < 2:
return n
preDiff = nums[1] - nums[0]
ret = 1 if preDiff == 0 else 2
for i in range(2,n):
diff = nums[i] - nums[i-1]
if (preDiff <= 0 and diff > 0) or (diff < 0 and preDiff >= 0):
ret += 1
preDiff = diff
return ret
这题虽然有思路,但是自己写起来逻辑很乱,看答案就理顺了,当preDiff和diff异号时再更新preDiff,正好达到了删除元素的效果
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
cur = 0
res = -99999999999
for i in range(n):
cur += nums[i]
res = max(res,cur)
cur = max(cur,0)
return res
这题cur用来更新子数组首,res用来更新最大和