LeetCode 367. Valid Perfect Square
阿新 • • 發佈:2018-02-03
需要 clas int beats ole lean uil function als
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt
.
Example 1:
Input: 16 Returns: True
Example 2:
Input: 14 Returns: False
題目標簽:Math
題目給了我們一個 num, 讓我們判斷它 是不是 perfect square。
可以利用binary search來找,需要註意overflow。
Java Solution:
Runtime beats 41.41%
完成日期:06/16/2017
關鍵詞:binary search
關鍵點:利用binary search 來找到 mid * mid == num
1 class Solution 2 { 3 public boolean isPerfectSquare(int num) 4 { 5 if(num <= 0) 6 return false;7 8 int left = 0; 9 int right = num; 10 11 while(left <= right) 12 { 13 int mid = left + (right - left) / 2; 14 15 int sq = mid * mid; 16 // check overflow here 17 if(sq != 0 && sq / mid != mid)18 { 19 right = mid - 1; 20 continue; 21 } 22 23 24 if(sq == num) 25 return true; 26 else if(sq > num) { 27 right = mid - 1; 28 } 29 else 30 { 31 left = mid + 1; 32 } 33 34 } 35 36 return false; 37 } 38 }
參考資料:n/a
LeetCode 題目列表 - LeetCode Questions List
題目來源:https://leetcode.com/
LeetCode 367. Valid Perfect Square