Eureka Problem
Sqrt(x)
Easy
2 implementations
Categories
Templates
package math.iterative;
public class SqrtX {
public int mySqrt(int x) {
long start = 0, end = x;
long sqrt = -1;
while (start <= end) {
long mid = start + (end - start) / 2;
if (mid * mid == x) return (int) mid;
if (mid * mid < x) {
sqrt = mid;
start = mid + 1;
} else
end = mid - 1;
}
return (int) sqrt;
}
}
#include <algorithm>
#include <ranges>
class Sqrtx {
public:
constexpr int mySqrt(const int x) const noexcept {
const auto range = std::views::iota(0LL, static_cast<long long>(x) + 1);
const auto it = std::ranges::partition_point(range, [x](long long val) { return val * val <= x; });
return static_cast<int>(*it - 1);
}
};