75. 颜色分类(不能用内置函数,利用三指针的方法)
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
red,white,blue = 0,0,len(nums)-1
while blue >= white:
if nums[white] == 0:
nums[white],nums[red] = nums[red],nums[white]
red += 1
white += 1
elif nums[white] == 1:
white += 1
else:
nums[blue],nums[white] = nums[white],nums[blue]
blue -= 1
return nums
class Solution(object):
def fourSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[List[int]]
"""
def findNsum(l, r, target, N, result, results):
if r - l + 1 < N or target < nums[l]*N or target > nums[r]*N:
return
if N == 2:
while l < r:
s = nums[l] + nums[r]
if s == target:
results.append(result+[nums[l],nums[r]])
l += 1
while l < r and nums[l] == nums[l-1]:
l += 1
elif s < target:
l += 1
else:
r -= 1
else:
for i in range(l,r+1):
if i == l or (i > l and nums[i-1] != nums[i]):
findNsum(i+1,r,target-nums[i],N-1,result+[nums[i]],results)
results = []
nums.sort()
findNsum(0,len(nums)-1,target,4,[],results)
return results