367.valid-perfect-square.go 305 B

123456789101112131415
  1. func isPerfectSquare(num int) bool {
  2. beg, end := 1, num+1
  3. for beg < end {
  4. mid := beg + (end-beg)/2
  5. div := num / mid
  6. if div == mid && div*mid == num { // 5 / 2 == 2, but 2 * 2 != 5
  7. return true
  8. } else if div < mid {
  9. end = mid
  10. } else if mid <= div {
  11. beg = mid + 1
  12. }
  13. }
  14. return false
  15. }