LetCode#69(JAVA)给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去.
69. Sqrt(x)
題目
給你一個(gè)非負(fù)整數(shù) x ,計(jì)算并返回 x 的 算術(shù)平方根 。
由于返回類型是整數(shù),結(jié)果只保留 整數(shù)部分 ,小數(shù)部分將被 舍去 。
注意:不允許使用任何內(nèi)置指數(shù)函數(shù)和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sqrtx
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
例子:
思路:
這題最先想到的是暴力法(習(xí)慣了),后來想想這種暴力解決的之前做過,用二分法效率高,大概就是正常二分找,因?yàn)榉祷氐氖钦麛?shù),所以直接返回left的值,這里要注意的是中間不能用乘法,會(huì)溢出,用除法就不會(huì)溢出很關(guān)鍵!
代碼:
public int mySqrt(int x) {// 特殊值判斷if (x == 0) {return 0;}if (x == 1) {return 1;}int left = 1;int right = x;while (left < right) {int mid = left + (right - left + 1) / 2;if (mid *mid > x ) {right = mid - 1;} else {left = mid;}}return left;}總結(jié)
很常規(guī)的一題二分法,其實(shí)想想二分用的真的挺多的,之前看過一個(gè)模板,二分的模板很強(qiáng)大,LeetCode上有,有興趣的可以搜一下!
2021年9月28日17:38:08
總結(jié)
以上是生活随笔為你收集整理的LetCode#69(JAVA)给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超实用的doc 转 docx
- 下一篇: 互换性与测量技术基础知识点总结