小工具知识网

当前位置: 首页 > 行业知识 > 代码随想录算法训练营D1

行业知识

代码随想录算法训练营D1

2026-11-11 17:39:52 来源:互联网转载

D1: 为什么报这个群呢,之前一直很难坚持,我觉得还是报个群,然后大家一起写,一起打卡会坚持住。没有自制力,再没有一起写的朋友的话,真的可以躺平了-.-

()

704.Binary Search:题目还是很简单的,二分查找,属于是自己写会写,但是会有小细节漏下。重点是左闭右开还是左闭右闭。详细见下

//递归写法class Solution {public:    int search(vector& nums, int target,int low,int high) {        if(low>high) return -1;        int mid=low+(high-low)/2;        if(nums[mid]==target) return mid;        if(nums[mid]>target) {            high=mid-1;            return search(nums, target, low, high);        }else{            low=mid+1;            return search(nums, target, low, high);        }    }};

递归写法,先确定确定递归函数,返回值以及参数,然后确定递归终止条件,如果是左闭右开,就要改成

()
if(low>=high) return -1;

最后是单层递归的逻辑,也就是target在哪边查哪边。

下面是迭代法:

//迭代法class Solution {public:    int search(vector& nums, int target) {        if(nums.empty()) return -1;                int low=0;        int high=nums.size()-1;                while(low            int mid=low+(high-low)/2;            if(nums[mid]==target) return mid;            else if(nums[mid]target){                high=mid-1;            }else{                low=mid+1;            }        }        return -1;    }};

左闭右闭写法的话,[low,high]是有效的,所以while后面是可以lowpublic: int removeElement(vector int size = nums.size(); for (int i = 0; i

上一篇:怎么创造服务器?

下一篇:购买服务器后怎么处理?