1. 程式人生 > 其它 >【LeetCode】367. Valid Perfect Square 有效的完全平方數(Easy)(JAVA)

【LeetCode】367. Valid Perfect Square 有效的完全平方數(Easy)(JAVA)

技術標籤: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。

解題方法

  1. 採用二分法查詢,判斷 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使用者

歡迎關注我的公眾號,LeetCode 每日一題更新