【Leetcode 完整解答筆記】367. 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

解答:(C 語言)

  bool isPerfectSquare(int num) {
        long int i = 1;
        for(i;i*i<num;i++);
        return i*i==num;
    }

我們來仔細看程式碼:

因為題目的限制,使用者輸入的數字從 1 開始,因此 i 也從 i 開始。

long int i = 1;

接下來看 for loop。

for(i;i*i<num;i++)

這個 for loop 和我們一般看到的 for loop 不一樣,這裡的 for loop 是為了判斷出 小於 輸入數字 num 的最大 i。舉個例子, num = 45,當跑完 for loop 後, i = 6*6=36<45,找到符合 i*i<num 的 i 時會離開 loop。

return i*i==num;

這個程式表達法是 如果符合以上 條件(i*i==num) ,就 return true,反之 return false。

這裡的 i*i !=num , 因此 return false。

Leave a Comment

Your email address will not be published. Required fields are marked *