微软面试题: LeetCode 69. x 的平方根 easy 出现次数:6
2020-12-05 21:10
816 查看
题目描述:
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
1 class Solution { 2 public: 3 //二分法 Time O(log x) 空间 O(1) 4 int mySqrt(int x) 5 { 6 long int l = 1,h = x; // 目标值一定在 区间[l,h]内 7 while(h - l > 1) //在区间只剩下两个元素时就要跳出循环,防止陷入死循环 8 { 9 long mid = l + (h - l)/2; 10 if(mid*mid == x) return mid; 11 else if(mid*mid > x) //mid 肯定不是目标值了,区间范围缩小到[l,mid - 1] 12 { 13 h = mid -1; 14 } 15 else //mid 仍然可能是目标值 区间范围 [mid,h],设置 while 条件 为 h - l > 1就是为了防止此处陷入死循环 16 { 17 l = mid; 18 } 19 } 20 //区间内只可能还有 1 个元素 或者 2 个元素,优先取后面一个 21 return h*h <= x?h:l; 22 } 23 };
相关文章推荐
- 微软面试题: LeetCode 151. 翻转字符串里的单词 出现次数:6
- LeetCode 面试题56 - I. 数组中数字出现的次数 | Python
- 剑指Offer LeetCode 面试题39. 数组中出现次数超过一半的数字
- leetcode 面试题56-II 数组中数字出现的次数
- 微软面试题:在排序数组中,找出给定数字的出现次数
- leetcode 面试题56-I 数组中数字出现的次数
- 【Golang】LeetCode-剑指Offer-面试题39-数组中出现次数超过一半的数字【三种解法】
- 所谓微软面试题的解答:求一个字符串中连续出现次数最多的子串
- 【leetcode刷题日记】面试题56 - I. 数组中数字出现的次数
- 最新的微软面试题,题目:求一个字符串中连续出现次数最多的子串
- 每日一道算法题:微软面试题:在排序数组中,找出给定数字出现的次数
- [微软面试题] 在排序数组中,找出给定数字的出现次数
- 剑指Offer LeetCode 面试题56 - II. 数组中数字出现的次数 II
- 面试题56 - I. 数组中数字出现的次数(Leetcode)最简单解释
- 最新的微软面试题,题目:求一个字符串中连续出现次数最多的子串
- 所谓微软面试题的解答:求一个字符串中连续出现次数最多的子串
- 剑指offer--面试题38:数字在排序数组中出现的次数
- 《剑指Offer》学习笔记--面试题32:从1到n整数中1出现的次数
- js中一道关于如何查找字符串中那个字母出现次数最多的面试题
- 面试题29:数组中出现次数超过一半的数字