开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
1 题目
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意: 不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
提示:
0 <= x <= 231 - 1
2 个人解析
2.1 思路
拿到这一题的时候,我首先想到的是。用js里面的内置函数来解决,然后题目说了明确不可以用内置函数。所以我就只能转换另一种思路来写。 然后我就想到了用穷举来解决,穷举的话就是从第一个一直到这个数的最后一个数循环让他们诚意自己自身当成以自己自身大于这个数的时候就结束,输出诚意自身的数,当然要在其基础上面减一才可以,因为只有。不大于它才可以,还有一种情况,那就是等于这个数,如果等于这个数的话,那就输出那个数的自身。
下面来看一下代码
2.2 代码
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
// return Math.floor(Math.pow(x,0.5))
for(let i=0;i<=x/2 + 1;i++){
if(i*i>=x){
return i*i==x ? i : i-1;
}
}
};
3 小结
在写的时候,我又想到了精进一点,让把这个数除以二,这样可以是程序之音的更快一些节日条件加一是防止有特殊数,比如1、5。
感谢看完:
- 博主个人前端网站:zhangqiang.hk.cn
- 欢迎加入博主的前端学习qq交流群::706947563,专注前端开发,共同学习进步啊 ~