代码随想录day01 704. 二分查找、27. 移除元素

leecode704 二分查找

题目链接:https://leetcode.cn/problems/binary-search/
学习文章:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#_704-%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE
视频链接:
https://www.bilibili.com/video/BV1fA4y1o715

  • 二分查找之前做过。知道思路写起来很快。边界条件确实没搞清楚。每次通过debug调好。。。看了学习视频,恍然大悟,总结要点如下。
    1. target 在区间[left, right],左闭右闭里时,注意:
while (left <= right)//含等于号
if(nums[middle] > target){
        right = middle-1; // 在左区间,在[left, middle-1]中
    }else if(nums[middle] < target){
        left = middle+1 //在右区间,在[middle+1, right]中
    }
  1. target 在区间[left, right),左闭右开里时,注意:
while (left < right)//不含等于号
if(nums[middle] > target){
      right = middle; // 在左区间,在[left, middle)中
  }else if(nums[middle] < target){
      left = middle+1 //在右区间,在[middle + 1, right)中
  }

时间复杂度:O(logn)
空间复杂度:O(1)

leecode27 移除元素

题目链接:https://leetcode.cn/problems/remove-element/

文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html

视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

  • 注意点:采用双指针(快慢指针)
    慢指针:指向更新 新数组下标的位置(最后一个元素的位置)
    快指针:用于指向新数组的元素。

此题配合动画更容易理解。

时间复杂度:O(n)
空间复杂度:O(1)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容