前言

谨以此文章记录leetcode刷题笔记。
刷题顺序按照代码随想录

数组

704.二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def search(self, nums: List[int], target: int) -> int:
l, r, m = 0, len(nums)-1, len(nums)//2
while l <= r:
m = (r+l)//2
if nums[m] == target:
return m
else:
if nums[m] < target:
l = m + 1
else:
r = m - 1
return -1

27.移除元素

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
if len(nums) == 0:
return 0
s, f = 0, 0
while f < len(nums):
# 快指针把非val丢过来
if nums[f] != val:
nums[s] = nums[f]
s += 1
f += 1
return s

977.有序数组的平方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
length = len(nums)
ans = [0] * length
l, r, addp = 0, length-1, length-1
while l <= r:
l2 = nums[l] * nums[l]
r2 = nums[r] * nums[r]
if l2 > r2:
ans[addp] = l2
l += 1
else:
ans[addp] = r2
r -= 1
addp -= 1
return ans


209.长度最小的子数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
minsubl = 1e6
s, f = 0, 0
sumfs = 0
for f in range(len(nums)):
sumfs += nums[f]
while sumfs >= target:
subl = f - s +1
if subl < minsubl:
minsubl = subl
sumfs -= nums[s]
s += 1
return minsubl if minsubl != 1e6 else 0