LeetCode:367. Valid Perfect Square

 1 package day20170206;
 2 //LeetCode:367. Valid Perfect Square
 3 /*
 4  Given a positive integer num, write a function which returns True if num is a perfect square else False.
 5 
 6 Note: Do not use any built-in library function such as sqrt.
 7 
 8 Example 1:
 9 Input: 16
10 Returns: True
11 Example 2:
12 Input: 14
13 Returns: False
14  */
15 public class isPerfectSquare367 {
16     public static boolean isPerfectSquare(int num) {
17         for(int i=1;i<=num/2+1;i++){
18             if(i*i==num)
19                 return true;
20             else if(i*i>num)
21                 return false;
22         }
23         return false;
24     }
25     //study1   1+3+5+...+(2n-1)=n^2
26     public static boolean isPerfectSquare2(int num){
27         for(int i=1;num>0;i+=2){
28             num-=i;
29         }
30         return num==0;
31     }
32     //study2 binary search
33     public static boolean isPerfectSquare3(int num){
34         int left=1,right=num;
35         if(num<1)
36             return false;
37         while(left<=right){
38             int mid=left+(right-left)/2;
39             if(mid*mid==num){
40                 return true;
41             }
42             else if(mid*mid>num){
43                 right=mid-1;
44             }else{
45                 left=mid+1;
46             }
47         }
48         return false;
49     }
50     //Newton Method 
51     public static boolean isPerfectSquare4(int num){
52         if(num<0)
53             return false;
54         int n=num/2;
55         while(n*n>num){
56             n=(n+num/n)/2;
57         }
58         return n*n==num;
59     }
60     
61     
62     public static void main(String[] args) {
63         // TODO Auto-generated method stub
64         System.out.println(isPerfectSquare(16));
65         System.out.println(isPerfectSquare(11));
66         System.out.println(isPerfectSquare(1));
67         
68         System.out.println(isPerfectSquare2(16));
69         System.out.println(isPerfectSquare2(11));
70         System.out.println(isPerfectSquare2(1));
71 
72         System.out.println(isPerfectSquare3(16));
73         System.out.println(isPerfectSquare3(11));
74         System.out.println(isPerfectSquare3(1));
75 
76     }
77 
78 }

 

posted @ 2017-02-07 10:02  蒲公英的花朵  阅读(209)  评论(0编辑  收藏  举报