367. 检验完全平方数 Valid Perfect Square

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: 16
Returns: True

Example 2:

Input: 14
Returns: False

题意:给一个非负的整形,判断它是否为完全平方数

解法:使用二分法搜索,右界从num/2开始。还要注意数据类型溢出的问题
  1. public class Solution {
  2. public bool IsPerfectSquare(int num) {
  3. long l = 1, r = num/2 + 1;
  4. while (l <= r) {
  5. long m = l + (r - l) / 2;
  6. long pow = m * m;
  7. if (pow == num) {
  8. return true;
  9. } else if (pow > num) {
  10. r = m - 1;
  11. } else if (pow < num) {
  12. l = m + 1;
  13. }
  14. }
  15. return false;
  16. }
  17. }





原文地址:https://www.cnblogs.com/xiejunzhao/p/34586027b313a0d4e008c802e58cfae4.html