有效的完全平方數
題目描述:給定一個 正整數 num ,編寫一個函數,如果 num 是一個完全平方數,則返回 true ,否則返回 false 。
完全平方數:完全平方指用一個整數乘以自己例如
1*1,2*2,3*3等,依此類推。若一個數能表示成某個整數的平方的形式,則稱這個數為完全平方數。完全平方數是非負數,而一個完全平方數的項有兩個。進階:不要 使用任何內置的庫函數,如 sqrt 。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-perfect-square/
著作權歸領扣網絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。
解法一:二分查找法
用二分查找的方法來尋找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));
}
}
【每日寄語】 愿你忠于自己,活的認真;笑得放肆。