Sunday, June 26, 2016

367. Valid Perfect Square

A classical binary search problem. I use integer for mid in first place but get LTE. The reason is mid*mid gets overflowed. So I have to declare mid as long long.

1:  class Solution {  
2:  public:  
3:    bool isPerfectSquare(int num) {  
4:      int lo = 1, hi = num;  
5:      while (lo <= hi) {  
6:        long long mid = lo + (hi - lo) / 2;  
7:        if (mid*mid == num) return true;  
8:        else if (mid*mid > num) hi = mid-1;  
9:        else lo = mid+1;  
10:      }  
11:      return false;  
12:    }  
13:  };  

No comments:

Post a Comment