有效的完全平方數
題目描述:給定一個 正整數 num ,編寫一個函式,如果 num 是一個完全平方數,則返回 true ,否則返回 false 。
完全平方數:完全平方指用一個整數乘以自己例如
1*1
,2*2
,3*3
等,依此類推。若一個數能表示成某個整數的平方的形式,則稱這個數為完全平方數。完全平方數是非負數,而一個完全平方數的項有兩個。進階:不要 使用任何內建的庫函式,如 sqrt 。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:二分查詢法
用二分查詢的方法來尋找num的開方是否是一個整數。首先,宣告low為0,high為最大整數的平方根,二分查詢的過程如下:
- 首先,low不大於high;
- 宣告一個mid,mid等於
(low + high) / 2
;- 如果
mid * mid == num
,則說明num是一個完全平方數,直接返回true;- 如果
mid * mid > num
,則將high設定為mid - 1
,然後進行下一輪處理;- 如果
mid * mid < num
,則將low設定為mid + 1
,然後進行下一輪處理。最後,如果沒找到整數的平方等於num,則說明num不是一個完全平方數,返回false。
public class LeetCode_367 {
/**
* 二分查詢法
* @param num
* @return
*/
public static boolean isPerfectSquare(int num) {
int low = 1, high = (int) Math.sqrt(Integer.MAX_VALUE);
while (low <= high) {
int mid = (low + high) / 2;
if (mid * mid == num) {
return true;
} else if (mid * mid > num) {
high = mid - 1;
} else if (mid * mid < num) {
low = mid + 1;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(isPerfectSquare(14));
}
}
【每日寄語】 願你忠於自己,活的認真;笑得放肆。