367. Valid Perfect Square[Easy, Math]

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

從1開始加的話會超時。要利用一個數學規律:

1 = 1
4 = 1 + 3
9 = 1 + 3 + 5
16 = 1 + 3 + 5 + 7
25 = 1 + 3 + 5 + 7 + 9
36 = 1 + 3 + 5 + 7 + 9 + 11
....
so 1+3+...+(2n-1) = (2n-1 + 1)n/2 = nn

復雜度O(sqrt(n))

public boolean isPerfectSquare(int num) {
     int i = 1;
     while (num > 0) {
         num -= i;
         i += 2;
     }
     return num == 0;
 }

或者用牛頓法。
https://discuss.leetcode.com/topic/49325/a-square-number-is-1-3-5-7-java-code/2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • #1996 AHSME ##1996 AHSME Problems/Problem 1 The addition ...
    abigtreenj閱讀 1,440評論 0 0
  • TF API數學計算tf...... :math(1)剛開始先給一個運行實例。tf是基于圖(Graph)的計算系統...
    MachineLP閱讀 3,547評論 0 1
  • 買好書,讀好書,讀懂好書,然后用知識改變的生活。 1. 選書的重要性 李笑來倡導的讀書方法以精讀為主:只字不差地閱...
    馬騁閱讀 2,996評論 0 1
  • 今天的天真藍,大朵大朵的白云仿佛觸手可及,很久沒有見過這么美的天空,就在等紅燈的時候,被車窗外的白云迷住了,記錄下...
    悅己三水閱讀 176評論 0 0