代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

代码随想录算法训练营第一天| 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

注意问题

  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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值