Skip to content

Commit

Permalink
Create 0069-sqrt(x).cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
Abe0770 authored Aug 4, 2023
1 parent 493d8a0 commit 4d3f52b
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions cpp/0069-sqrt(x).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
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.
Ex. Input: x = 4
Output: 2
Explanation: The square root of 4 is 2, so we return 2.
Time : O(log N)
Space : O(1)
*/

class Solution {
public:
int mySqrt(int x) {
if(x == 0 || x == 1)
return x;

long long beg = 0, mid = 0, end = x/2;
while(beg <= end) {
mid = (beg + end)/2;
if(mid * mid < x) {
if((mid + 1) * (mid + 1) > x)
return mid;
beg = mid+1;
} else if(mid * mid > x) {
if( (mid - 1) * (mid - 1) < x)
return mid-1;
end = mid - 1;
} else
return mid;
}
return mid;
}
};

0 comments on commit 4d3f52b

Please sign in to comment.