实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
1 2 3 4 5 6 7 8 9 10
| 示例 1:
输入: 4 输出: 2 示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
class Solution: def mySqrt(self, x):
l, r, ans = 0, x, -1
while l<=r: mid = (r+l) //2 print(l, r) if mid**2 <= x: ans = mid l = mid+1 else: r = mid-1 return ans
print(Solution().mySqrt(36))
|
执行用时:2524 ms, 在所有 Python3 提交中击败了7.20%的用户
内存消耗:14.8 MB, 在所有 Python3 提交中击败了11.25%的用户
二分法模板1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = (left + right) / 2; if(nums[mid] == target) { } else if(nums[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return 0; } }
|
二分法模板1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length; while(left < right) { int mid = (left + right) / 2; if(nums[mid] == target) { } else if(nums[mid] < target) { left = mid + 1; } else { right = mid; } } return 0; } }
|