Sqrt(x) LeetCode
Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well.
You must not use any built-in exponent function or operator.
For example, do not use pow(x, 0.5) in c++ or x ** 0.5 in python.
Example 1:
Input: x = 4
Output: 2
Explanation: The square root of 4 is 2, so we return 2.
Example 2:
Input: x = 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since we round it down to the nearest integer, 2 is returned.
class Solution {
public int mySqrt(int x) {
// Base cases: if x is 0 or 1, square root is the number itself
if (x == 0 || x == 1) return x;
int start = 1; // Minimum possible square root
int end = x; // Maximum possible square root
int ans = 1; // Variable to store the final answer
// Binary search to find the integer square root
while (start <= end) {
int mid = start + (end - start) / 2;
// Convert mid to long to prevent integer overflow when squaring
long square = (long) mid * mid;
// If mid*mid == x, we found the exact square root
if (square == x) {
return mid;
}
// If square is less than x, move to right half
else if (square < x) {
ans = mid; // Store current mid as possible answer
start = mid + 1; // Try for a bigger number
}
// If square is greater than x, move to left half
else {
end = mid - 1; // Try for a smaller number
}
}
// Return the integer part of the square root
return ans;
}
}
Comments
Post a Comment