class Solution(object):
def moveZeroes(self, nums):
pre = 0 # 用于交换前面的0
for i in range(len(nums)):
if nums[i] != 0:
nums[i], nums[pre] = nums[pre], nums[i] # 交换
pre += 1
return nums
class Solution(object):
def maxArea(self, height):
l, r = 0, len(height) - 1 # 首尾双指针
res = 0
while l != r: # 往中间靠拢
# 记录最大雨水量
res = max(res, min(height[l], height[r]) * (r - l))
if height[l] < height[r]: # 较矮的往中间移,相等随便
l += 1
else:
r -= 1
return res
class Solution(object):
def threeSum(self, nums):
res = list()
nums.sort() # 先排序
n = len(nums)
for i in range(n):
if nums[i] > 0: # 大于0后面不可能相加等于0了,直接break
break
if i > 0 and nums[i] == nums[i - 1]: # i去重
continue
l, r = i + 1, n - 1 # 前后双指针
while l < r:
sum = nums[i] + nums[l] + nums[r]
if sum < 0:
l += 1
elif sum > 0:
r -= 1
else:
res.append([nums[i], nums[l], nums[r]])
while l < r and nums[l + 1] == nums[l]: # l去重
l += 1
while l < r and nums[r - 1] == nums[r]: # r去重
r -= 1
l += 1
r -= 1
return res