二分查找
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
left = 0
right = len(nums)
while left < right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid
elif nums[mid] == target:
return mid
return -1
二分查找里面踩到的坑主要是开闭区间的问题,如果没有处理好的话,测试的target是数组最后一个数或者数组里面没有的数会产生下标溢出或者始终跳不出循环的问题。
移除元素
今天只尝试了暴力法
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
while(True):
if val in nums:
nums.remove(val)
else:
return len(nums)
return len(nums)
1.3
数组是连续的空间
双指针的操作真的很巧妙,快是用来判断新数组的值满不满足要求的,而慢指针对应的是数组中的位置,这两个指针是在原数组上操作的