LeetCode 20191127(plus)

1.搜索插入位置
自解√
这道题其实非常简单,就是for循环 然后如果没到target值,就继续,比它大了就返回当前下标
或者当相等的时候 也返回当前值
最后 要注意一点就是
注意: 如果target比最后一个元素还大的时候 就会退出循环而没有return值
所以这种情况的话 就需要return nums.size()

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        if(nums.size()==0){return 0;}
        for(int i=0;i<nums.size();i++){
            if(nums[i]<target){continue;}
            if(nums[i]>=target){
                return i;
            }
        }
        return nums.size();
    }
};

2.x的平方根

这道题的思路是查找谁的平方是x 我的思路是二分法,思路没有问题 但是实现的时候出了问题
注意1:二分 要设定左右值 然后二分
注意2: 就是假如设定int会溢出 所以设定long long 就会避免溢出
但是好像int 和long long 的范围 好像是一样的
为啥用long long 就不会溢出 int就会溢出

class Solution {
public:
    int mySqrt(int x) {
        if(x==0){return 0;}
        long long left=0;
        long long right=x/2+1;
        long long mid=(left+right)/2;
        while(left<=right){
            if(mid*mid==x){
                return mid;
            }
            else if(mid*mid>x){
                right=mid-1;
            }
            else{
                left=mid+1;
            }
            mid=(left+right)/2;
        }
        return mid;
    }
};

今天是这周的最后一天了 晚安

发布了44 篇原创文章 · 获赞 9 · 访问量 3348

猜你喜欢

转载自blog.csdn.net/puying1/article/details/103272304