[1]-代码随想录算法训练营-day1-数组-part1

发布时间 2023-08-30 00:59:29作者: 缪白(Miubai)

代码随想录算法训练营第一天|数组-part1

1.Leecode 704.二分查找

  1. 题目

  2. 思路

    • 二分查找法
  3. 刷随想录后想法

    • 区间开闭
    • 三指针
  4. 实现困难

    • 开闭确定
    • 边界条件处理,包含与不包含
  5. 实现代码

    int search(int* nums, int numsSize, int target){
       /*
         * 1.定义三个指针,left, right,middle
         * 2.比较middle值与target值大小,大则right=middle,小则left=middle
         * 3.重复步骤2,直到找到target或者right<left
         * 4.否则返回-1
         * */
        int left = 0;
        int right = numsSize-1;
        int middle = -1;
        while (left <= right ){
            //左闭右闭
            middle = (left+right)/2;
            if (nums[middle] == target)
                return middle;
            if (nums[middle] > target){
                right = middle - 1;
            } else {
                left = middle + 1;
            }
    
        }
        return -1;
    }
    
  6. 学习收获

    • 二分查找边界值与区间开闭的关系

2.Leecode 27.移除元素

  1. 题目

  2. 思路

    • 暴力
  3. 刷随想录后想法

    • 双指针思想
  4. 实现困难

    • 尚无
  5. 实现代码

    int removeElement(int* nums, int numsSize, int val){
        int fast = 0;
        int slow = 0;
        for(fast; fast < numsSize; fast++){
            if(nums[fast] != val){
                nums[slow] = nums[fast];
                slow++;
            }
        }
        return slow;
    }
    
  6. 学习收获

    • 双指针思想解决数组元素移除问题