class Solution {
public:
bool judgeSquareSum(int c) {
if(c == 0 || c==1)
return 1;
long x1 = 0;
long x2 = sqrt(c);
while(x1 != x2){
long t1 = x1 * x1;
long t2 = x2 * x2;
if(t1 + t2 > c)
x2--;
else if(t1 + t2 < c)
x1++;
else return 1;
}
if(x1 * x1 + x2 * x2 == c)
return 1;
else
return 0;
}
};
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int l = 0;
int r = nums.size() - 1;
int mid = 0;
int cnt = 0;
int flag = 0;
if(nums.empty())
return vector<int>{-1,-1};
while(l <= r){
mid = l + (r - l) / 2;
if(nums[mid] > target)
r = mid - 1;
else if(nums[mid] < target)
l = mid + 1;
else{
flag = 1;
cnt = mid;
break;
}
}
if(!flag)
return vector<int>{-1,-1};
int i = cnt;
int j = cnt;
while(nums[i] == target){
i++;
if(i >= nums.size())
break;
if(i == nums.size() - 1 && nums[i] == target){
i++;
break;
}
}
while(nums[j] == target){
j--;
if(j < 0)
break;
if(j == 0 && nums[j] == target){
j--;
break;
}
}
return vector<int>{j + 1,i - 1};
}
};