代码随想录算法训练营第一天

● 今日学习的文章链接和视频链接

● 自己看到题目的第一想法

1. 704二分法:

方法一:
整个数组是 左闭右闭区间 [ ]

  1. left指针指向数组开始下标, right 指针指向数组最后下表nums.size()-1, mid为 (left+right) /2
  2. 循环条件 left<=right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid-1
    nums[mid] = target 返回 mid
    找不到 返回 -1

方法二:
整个数组是 左闭右开区间 [ )

  1. left指针指向数组开始下标, right 指针指向数组最后下表nums.size(), mid为 (left+right) /2
  2. 循环条件 left< right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid
    nums[mid] = target 返回 mid
    找不到 返回 -1
2.注意:区间边界问题

整个数组是 左闭右闭区间 [ ]
整个数组是 左闭右开区间 [ )

3.具体代码

方法一:

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

    }
};

在这里插入图片描述
方法二:

class Solution {
   
public:
    int search(vector<int>& nums, int target) {
   
        int left =0;
        int right = nums.size();

        while(left< right){
   
            int mid = (left +right)/2;
            if(nums[mid] < target){
   
                left =mid+1;
            }else if(nums[mid]  > target){
   
                right = mid;
            }else{
   
                return mid ;
            }
        }

        return -1;
    }
};

在这里插入图片描述

2. 27移除元素

思路

方法一:双指针

  1. 定义下标 快指针fast , 慢指针slow
  2. 循环条件 fast <= nums.size()-1
  3. nums[fast] == val 则fast++;
    nums[fast] != val 则 nums[slow] = nums[fast], slow++, fast++;
    slow最终指向没有val值 数组最后一个元素的下标。

方法二:
4. 定义left =0 right =nums.size()-1
5. 循环条件 left<=right
6. 左边找到nums[left]==val 的下标
右边找到nums[right] !=val 的下标
交换 nums[left] =nums[right] left++; right–;
结果: return left;

class Solution {
   
public:
    int removeElement(vector<int>& nums, int val) {
   
        int left =0;
        int right = nums.size()-1;
        while(left<=right){
   
            while(left<=right && nums[left] != val){
   
                left++;
            }
            while(left<=right && nums[right] == val){
   
                right--;
            }
            if(left<=right){
   
                nums[left] = nums[right];
                left++;
                right--;
            }

        }
        return left;
    }
};

在这里插入图片描述

注意

slow指:更新后 新数组下标
fast 指:寻找新数组的元素

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

        return slow;
    }
};

在这里插入图片描述

● 看完代码随想录之后的想法

● 自己实现过程中遇到哪些困难

● 今日收获,记录一下自己的学习时长

相关推荐

  1. 代码随想算法训练第二十五

    2024-02-23 05:40:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 05:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 05:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 05:40:03       82 阅读
  4. Python语言-面向对象

    2024-02-23 05:40:03       91 阅读

热门阅读

  1. Pandas读取excel表并新增一列后存储

    2024-02-23 05:40:03       44 阅读
  2. vue中computed和watch的使用场景

    2024-02-23 05:40:03       55 阅读
  3. k8s部署模板

    2024-02-23 05:40:03       62 阅读
  4. 通过Nginx实现在浏览器查看Linux服务器日志

    2024-02-23 05:40:03       54 阅读
  5. 【软考高项】【英语知识】-- 单词积累

    2024-02-23 05:40:03       38 阅读
  6. 程序员为啥不关电脑

    2024-02-23 05:40:03       43 阅读
  7. 用脑补而不是重传对有损传输进行纠错

    2024-02-23 05:40:03       59 阅读
  8. json字符串的处理

    2024-02-23 05:40:03       37 阅读
  9. springsecurity框架笔记

    2024-02-23 05:40:03       41 阅读
  10. el-upload组件实现上传拖拽排序图片顺序

    2024-02-23 05:40:03       44 阅读
  11. 深入探讨YUV图像处理:理论原理与OpenCV实践

    2024-02-23 05:40:03       39 阅读
  12. @Conditional注解

    2024-02-23 05:40:03       50 阅读