搜索
您的当前位置:首页正文

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

来源:吉趣旅游网

题目链接:
看到这个题目,心里笑出声了,这个题已经做了好多遍了,两种方式(左闭右闭、左闭右开)写得很顺畅

提交过很多次

左闭右闭
function search(nums: number[], target: number): number {
    let middle:number, left:number = 0, right:number = nums.length - 1;

    while(left <= right) {
        middle = left + ((right - left) >> 1);
        if(nums[middle] > target) {
            right = middle - 1;
        }else if(nums[middle] < target) {
            left = middle +1;
        }else {
            return middle;
        }
    }

    return -1;
};
左闭右开
function search(nums: number[], target: number): number {
    let left:number = 0, right:number = nums.length;
    let middle:number;

    while(left < right) {
        middle = left + ((right - left) >> 1);
        if(nums[middle] > target) {
            right = middle;
        }else if(nums[middle] < target) {
            left = middle + 1;
        }else {
            return middle;
        }
    }
    return -1;
};

题目链接:

这道题也做过很多遍了,但是!还是要想好久,今天看了卡哥的视频,豁然开朗!

题目讲解视频:

双指针重点:快指针用来寻找新数组的元素(不等于val的元素),慢指针是新数组的起点下标!
function removeElement(nums: number[], val: number): number {
   let fast:number = 0;//快指针用来寻找新数组的元素(不等于val的元素)
   let slow:number = 0;//慢指针就是新数组的下标起点

   while(fast < nums.length) {
       if(nums[fast] !== val) {
           nums[slow] = nums[fast];
           slow++;
       }
       fast++;
   }
   return slow;
};

因篇幅问题不能全部显示,请点此查看更多更全内容

Top