day1---二分查找打卡---力扣704--力扣27

 

打卡第一天,希望自己可以坚持两个月,把算法能力提升去,然后方便找工作。

然后很久没有刷算法题目了,这次的态度要很端正,因为之前刷题目的过程都不是一个非常完整的过程,所以这次是再次尝试,也是新的起点,要好好完成它。当然我也相信自己可以做好他,这件事是我每天必须要做的第一件事情。优先级最高。期待2个月后更加优秀的自己。

 

 

力扣704题

 

 

 1 class Solution {
 2 public:
 3     int search(vector<int>& nums, int target) {
 4         //左闭右闭写法
 5         int left=0;
 6         int right=nums.size()-1;//因为右边那个也算,所以要-1,如果不-1,就不算了
 7         while(left<=right){
 8             int mid=left+(right-left)/2;
 9             //[0,5],0+5/2=2所以mid的那个数字是2
10             if(nums[mid]>target){
11                 right=mid-1;
12             }else if(nums[mid]<target){
13                 left=mid+1;
14             }else{
15                 //nums[mid]==target
16                 return mid;
17             }
18         }
19         return -1;
20     }
21 };

 

 

 左闭右开写法

class Solution {
public:
    int search(vector<int>& nums, int target) {
        //左闭右开写法
        int left=0;
        int right=nums.size();//因为右边是开区间,所以是nums.size(),这是遍历不到的
        while(left<right){
            int mid=left+(right-left)/2;
            if(nums[mid]==target){
                return mid;
            }else if(nums[mid]>target){
                right=mid;
            }
            else{
                left=mid+1;
            }
        }
        return -1;
    }
};

 

力扣27题

 

 

暴力解法

还有一个注意点是,外层for循环的条件是i<size

我最开始写得i<nums.size()这个不对,会超时,因为不管怎么样,这个数组的size函数得到的结果都是原始结果,不会变得

会变得是我们自己定义的size变量

 

posted @ 2023-01-11 02:50  今天也是开心的一天呀  阅读(84)  评论(0)    收藏  举报