本篇参照大佬博客练习题顺序,代码都是自打的,有些可能不是最优解。
目录
69. x 的平方根
class Solution {
public:
int mySqrt(int x) {
long long l=1,r=x;
while(l<=r)
{
long long mid=(l+r)/2;
if(mid*mid>x)
{
r=mid-1;
}
else if(mid*mid<x)
l=mid+1;
else
return mid;
}
return r;
}
};
744. 寻找比目标字母大的最小字母
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int l=0,r=letters.size()-1;
while(l<=r)
{
int mid=(l+r)/2;
if(letters[mid]<=target)
{
l=mid+1;
}
else
r=mid-1;
}
if(l>=letters.size())
l=0;
return letters[l];
}
};
540. 有序数组中的单一元素
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int ans=0;
for(int i=0;i<nums.size();i++)
ans^=nums[i];
return ans;
}
};
278. 第一个错误的版本
// The API isBadVersion is defined for you.
// bool isBadVersion(int version);
class Solution {
public:
int firstBadVersion(int n) {
long long l=0,r=n;
while(l<=r)
{
long long mid=(l+r)/2;
if(isBadVersion(mid))
{
r=mid-1;
}
else
l=mid+1;
}
return l;
}
};