01天【代码随想录算法训练营34期】 第一章 数组part01 (704. 二分查找、 27. 移除元素)

704. 二分查找

  • 先选是[low, high]还是[low, high)还是(low, high]

  • 下面选择[]

  • "while (low <= high)"还是"while (low < high)"
    因为[1,1]合法,所以是<=(什么是不合法呢,比如说[2,1])

  • "high = mid - 1"还是"high = mid"
    这个情况,我们已知nums[mid] > target,所以下一个区间不能包含mid,所以high = mid-1

class Solution(object):
    def search(self, nums, target):
        low = 0
        high = len(nums) - 1
        while (low <= high):
            mid = (high + low) // 2
            if nums[mid] == target:
                return mid
            elif nums[mid] > target:
                high = mid - 1
            else:
                low = mid + 1
        return -1

Complexity: O(log(n))

27. 移除元素
快慢指针

class Solution(object):
    def removeElement(self, nums, val):
        i = 0
        j = 0
        while j < len(nums):
            if (nums[j] != val):
                nums[i] = nums[j]
                i += 1
            j += 1
        return i

Complexity: O(n)

posted @   MiraMira  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示