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

316 阅读1分钟

第一章 数组part01

 1、数组理论基础  

文章链接:programmercarl.com/%E6%95%B0%E…

题目建议: 了解一下数组基础,以及数组的内存空间地址,数组也没那么简单。

2、 704. 二分查找 

题目思路·: 二分查找法以前了解过许多,但是一直没有明白其中middle和不等号的运用,今天算是彻底的搞懂了

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;
        while(left <= right) {
            int middle = (left + right)/2;
            if(nums[middle] > target) {
                right = middle -1;
            }else if (nums[middle] < target){
                left = middle + 1;
            }else {
                return middle;
            }
        }
        return -1;
    }
};

题目链接:leetcode.cn/problems/bi…

文章讲解:programmercarl.com/0704.%E4%BA…

视频讲解:www.bilibili.com/video/BV1fA…

 3、移除元素

题目思路:  一开始思路想要暴力求解,但是调试了一个小时,还是没有调试出来结果,看了视频和文章后,双指针太秒了,原来数据结构与算法这么有趣。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int slow = 0;
        for(int fast = 0; fast < nums.size(); fast++ ) {
            if(nums[fast] !=val)
                nums[slow++] = nums[fast]; 
        }
        return slow;
    }
};

题目链接:leetcode.cn/problems/re…

文章讲解:programmercarl.com/0027.%E7%A7…

视频讲解:www.bilibili.com/video/BV12A…