- 1 public class Solution {
- 2 public boolean isPerfectSquare(int num) {
- 3
- if (num <= 2) return true;
- 4 int low = 1,
- high = num;
- 5 int mid = low + (high - low) / 2;
- 6 int prevMid = 0;
- 7 8
- while (low <= high && mid != prevMid) {
- 9 prevMid = mid;
- 10
- if (num / mid == mid && num % mid == 0) return true;
- 11
- else if (num / mid < mid) {
- 12 high = mid;
- 13 mid = low + (mid - low) / 2;
- 14
- } else {
- 15 low = mid;
- 16 mid = mid + (high - mid) / 2;
- 17
- }
- 18
- }
- 19
- return false;
- 20
- }
- 21
- }
来源: http://www.bubuko.com/infodetail-1980391.html