博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Valid Perfect Square
阅读量:4935 次
发布时间:2019-06-11

本文共 1930 字,大约阅读时间需要 6 分钟。

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: 16Returns: TrueExample 2:Input: 14Returns: False

我的binary Search 解法:无需变成long

1 public class Solution { 2     public boolean isPerfectSquare(int num) { 3         if (num <= 0) return false; 4         int l=1, r=num/2+1; 5         while (l <= r) { 6             int mid = l + (r-l)/2; 7             if (mid == num/mid && num%mid == 0) return true; 8             else if (mid > num/mid) { 9                 r = mid - 1;10             }11             else l = mid + 1;12         }13         return false;14     }15 }

 

别人三种方法总结:

  1. a square number is 1+3+5+7+... Time Complexity O(sqrt(N)) (Credit to lizhibupt, thanks for correcting this).
  2. binary search. Time Complexity O(logN)
  3. Newton Method. See [this wiki page][1]. Time Complexity is close to constant, given a positive integer.
1 public boolean isPerfectSquare(int num) { 2       if (num < 1) return false; 3       for (int i = 1; num > 0; i += 2) 4         num -= i; 5       return num == 0; 6     } 7      8     public boolean isPerfectSquare(int num) { 9       if (num < 1) return false;10       long left = 1, right = num;// long type to avoid 2147483647 case11     12       while (left <= right) {13         long mid = left + (right - left) / 2;14         long t = mid * mid;15         if (t > num) {16           right = mid - 1;17         } else if (t < num) {18           left = mid + 1;19         } else {20           return true;21         }22       }23     24       return false;25     }26     27     boolean isPerfectSquare(int num) {28       if (num < 1) return false;29       long t = num / 2 + 1; //or t = num as the begining30       while (t * t > num) {31         t = (t + num / t) / 2;32       }33       return t * t == num;34     }

 

转载于:https://www.cnblogs.com/EdwardLiu/p/6097372.html

你可能感兴趣的文章
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>
node.js的异步I/O、事件驱动、单线程
查看>>
vue cli3 子目录问题
查看>>
github.com访问慢解决
查看>>
微服务架构最强详解
查看>>
转:哈夫曼树详解
查看>>
.Net Core Identity外面使用Cookie中间件
查看>>
【坐在马桶上看算法】算法1:最快最简单的排序——桶排序
查看>>
C#中泛型之Dictionary
查看>>
强连通分量
查看>>
使用Code First模式开发如何更新数据库(转载)
查看>>
sqoop导出工具
查看>>
Codeforces Round #376 (Div. 2)
查看>>
Codeforces 607D Power Tree 线段树 (看题解)
查看>>
写在人生的路上——2016年上半年总结
查看>>
员工选票系统-java
查看>>
C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:...
查看>>