1、盛水最多的容器
from typing import List
class Solution:
def maxArea(self, height: List[int]) -> int:
# 双指针初始化
l = 0
r = len(height) - 1
max_area = 0
# 循环终止条件
while l < r:
# 指针调整条件
if height[l] < height[r]:
# 指针调整前计算中间值
max_area = max(max_area, (r - l) * height[l])
l += 1
else:
max_area = max(max_area, (r - l) * height[r])
r -= 1
return max_area
2、两数之和等于目标值-有序数组
# 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target
# 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。
from typing import List
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
# 双指针初始化
l = 0
r = len(numbers) -1
# 循环终止条件
while l < r:
if numbers[l] + numbers[r] == target:
return [l, r]
# 调整指针
if numbers[l] + numbers[r] > target:
r -= 1
else:
l += 1
return []
3、总结:
双指针,左指针最左,右指针最右,左加加右减减计算临时值,直到左不小于右。