Это 20-й день моего участия в Gengwen Challenge, пожалуйста, проверьте подробности мероприятия:Обновить вызов
Для лучшего будущего придерживайтесь чистки зубовLeetCode!
тема
Реализуйте функцию int sqrt(int x).
Вычисляет и возвращает квадратный корень из x, где x — целое неотрицательное число.
Поскольку тип возвращаемого значения — целое число, сохраняется только целая часть результата, а дробная часть округляется.
Пример 1:
输入: 4
输出: 2
Пример 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
Решение 1 - бинарный поиск
Идеи решения проблем
Квадратный корень из х, чтобы найти удовлетворениеМаксимумЦенность на нем.
правильновыполнить бинарный поиск,left
установить на 0,right
установить какx
,mid
Выбиратьleft + right
средний, скорректированный путем сравненияleft
иright
.
код
func mySqrt(x int) int {
if x == 0 {
return 0
}
l, r := 0, x
res := -1
for l <= r {
m := (l + r) / 2
if m * m <= x {
res = m
l = m + 1
} else {
r = m - 1
}
}
return res
}
Результаты
执行用时:4 ms,在所有 Go 提交中击败了 52.52% 的用户
内存消耗:2.2 MB,在所有 Go 提交中击败了 61.82% 的用户
Анализ сложности
- временная сложность:, количество раз, необходимое для бинарного поиска.
- Сложность пространства: