Вопрос: реализовать int sqrt(int x)
.
Вычислите и верните квадратный корень из x, где x гарантированно будет неотрицательным целым числом.
Поскольку тип возвращаемого значения — целое число, десятичные цифры усекаются, и возвращается только целая часть результата.
Пример 1:
Input: 4 Output: 2
Пример 2:
Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.
Полностью вопрос можно посмотреть здесь.
Подход 1: Начнем с грубой силы —
//Approach 1 //Runtime: Time limit exceeded //Memory usage: N/A class Solution { public int mySqrt(int x) { for(int i = 1; i<=x; i++){ if(i*i==x||((i+1)*(i+1))>x){ return i; } } return 0; } }
Подход 2: Это просто для удовольствия —
//Approach 2 //Runtime: 1ms //Memory usage: 32.5MB class Solution { public int mySqrt(int x) { return (int)(Math.sqrt(x)); } }
Очевидно, нам нужен еще один пост, чтобы воздать должное. Может быть, это может помочь.
Больше постов ищите здесь.
Удачи и Чао!