【LeetCode】367. Valid Perfect Square 有效的完全平方數(Easy)(JAVA)
阿新 • • 發佈:2020-12-26
技術標籤:Leetcodeleetcodejava演算法資料結構面試
【LeetCode】367. Valid Perfect Square 有效的完全平方數(Easy)(JAVA)
題目地址: https://leetcode.com/problems/valid-perfect-square/
題目描述:
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Follow up: Do not use any built-in library function such as sqrt.
Example 1:
Input: num = 16
Output: true
Example 2:
Input: num = 14
Output: false
Constraints:
- 1 <= num <= 2^31 - 1
題目大意
給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。
說明:不要使用任何內建的庫函式,如 sqrt。
解題方法
- 採用二分法查詢,判斷 mid 是否滿足要求,不滿足如果大了往前搜尋,如果小了往後搜尋
class Solution { public boolean isPerfectSquare(int num) { int start = 1; int end = num; while (start <= end) { int mid = start + (end - start) / 2; long square = 1L * mid * mid; if (square == num) return true; if (square > num) { end = mid - 1; } else { start = mid + 1; } } return false; } }
執行耗時:0 ms,擊敗了100.00% 的Java使用者
記憶體消耗:35.1 MB,擊敗了80.40% 的Java使用者