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;
}
};
今天是这周的最后一天了 晚安