zoukankan      html  css  js  c++  java
  • [Swift]LeetCode367. 有效的完全平方数 | Valid Perfect Square

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9769202.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    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
    Output: true
    

    Example 2:

    Input: 14
    Output: false

    给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

    说明:不要使用任何内置的库函数,如  sqrt

    示例 1:

    输入:16
    输出:True

    示例 2:

    输入:14
    输出:False

    8ms
     1 class Solution {
     2     func isPerfectSquare(_ num: Int) -> Bool {
     3         //任意完全平方数都可以表示成连续的奇数和
     4         var j:Int = num
     5         var i:Int = 1
     6         while(j > 0)
     7         {
     8             j -= i
     9             i += 2
    10         }
    11         return j == 0       
    12     }
    13 }

    8ms

     1 class Solution {
     2     func isPerfectSquare(_ num: Int) -> Bool {
     3         var x = 0
     4         while x * x < num {
     5             x += 1
     6         }
     7         
     8         return x * x == num
     9     }
    10 }

    12ms

    1 class Solution {
    2     func isPerfectSquare(_ num: Int) -> Bool {
    3         var r = num
    4         while (r*r > num){
    5             r = (r + num/r)/2
    6         }
    7         return r*r == num
    8     }
    9 }

    8ms

     1 class Solution {
     2     func isPerfectSquare(_ num: Int) -> Bool {
     3        //二分法
     4         var left = 1
     5         var right = num
     6 
     7         while left <= right {
     8             let mid = left + (right - left) / 2
     9             if mid * mid >= num {
    10                 right = mid - 1
    11             } else if mid * mid < num {
    12                 left = mid + 1
    13             }
    14         }
    15 
    16         return left * left == num
    17     }
    18 }

  • 相关阅读:
    【bzoj2820】GCD
    【learning】莫比乌斯反演
    【bzoj2151】种树
    【noip模拟】局部最小值
    【learning】多项式乘法&fft
    【learning】二分图最大匹配的König定理
    【noip模拟】2048
    【noip模拟】修长城
    【noip模拟】最小点覆盖
    【noip模拟】Fantasia
  • 原文地址:https://www.cnblogs.com/strengthen/p/9769202.html
Copyright © 2011-2022 走看看