Leetcode 704. 二分查找
题目:
//左闭右闭
class Solution:
def search(self, nums: List[int], target: int) -> int:
l = 0
r = len(nums) - 1
while l <= r:
middle = (l + r) // 2
if nums[middle] < target:
l = middle + 1
elif nums[middle] > target:
r = middle - 1
else:
return middle
return -1
//左闭右开
class Solution:
def search(self, nums: List[int], target: int) -> int:
l = 0
r = len(nums)
while l < r:
middle = (l + r) // 2
if nums[middle] < target:
l = middle + 1
elif nums[middle] > target:
r = middle
else:
return middle
return -1
Leetcode 27. 移除元素
//暴力解法
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
size = len(nums)
i = 0
while i < size:
if nums[i] == val:
for j in range(i + 1, size):
nums[j-1] = nums[j]
size -= 1
else:
i += 1
return size
//快慢指针
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
size = len(nums)
slow = 0
fast = 0
while fast < size:
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow