代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
leetcode704. 二分查找
代码思路
此处我们先给出左边界的索引和右边界的索引用来确定中点的索引,然后判断中点与target是否相等,如果相等,则返回该索引值,如果不相等,则左边界变为往中点左移1,或者右边界变为往中点右移1。
# 代码如下
class Solution:
def search(self, nums: List[int], target: int) -> int:
length = len(nums)
left = 0 # 初始化左边边界的坐标
right = length - 1 # 初始化右边边界的坐标
while left <= right:
mid = left + (right - left + 1) // 2 # 确定中间点的坐标
if nums[mid] == target:
return mid
elif nums[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
注意问题
- 此处用到了整除符号"//",计算结果为向下取整,例如5//2=2,1//2=0。
leetcode27. 移除元素
代码思路
非常简洁的代码哈哈。n代表处理的总次数,flag代表删除一个元素后,由于index会发生改变,即后面的元素会往前移一格。这里记录更新后下一个元素的索引。
# 代码如下
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
origin_length = len(nums)
n = 0
flag = 0
while n < origin_length:
if nums[flag] == val:
del nums[flag]
flag -= 1 # 删除元素后,后面的元素会往前移动一格。
n += 1
flag += 1
return len(nums)