代码随想录-数组1(704.二分查找、27.移除元素)

704.二分查找

1.暴力解法

class Solution {
public:
    int search(vector& nums, int target) 
    {
        for (int i=0; i

2. 二分查找

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

27.移除元素

要理解快慢指针的用法,覆盖元素

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

        之后把35.搜索插入位置 和 34. 在排序数组中查找元素的第一个和最后一个位置 学习一下。

你可能感兴趣的:(算法,leetcode,数据结构)