• 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

    本题开始做的时候并没有什么思路,后来看了tag的提示知道了可以用binary search来做,本题需要注意的是越界问题,代码如下:
     1 public class Solution {
     2     public boolean isPerfectSquare(int num) {
     3         int left = 1;
     4         int right = num;
     5         while(left<=right){
     6             long mid = left+(right-left)/2;
     7             if(mid*mid==num) return true;
     8             else if(mid*mid<num) left = (int)mid+1;
     9             else right = (int)mid-1;
    10         }
    11         return false;
    12     }
    13 }

    有一个效率不高的做法,代码如下:

    1 public boolean isPerfectSquare(int num) {
    2      int i = 1;
    3      while (num > 0) {
    4          num -= i;
    5          i += 2;
    6      }
    7      return num == 0;
    8  }
  • 相关阅读:
    类例程_java战斗程序
    "类"的讲稿
    象棋中“车”的攻击范围_C#
    面向对象_方法_例题
    入门例子
    MyBatis
    MyBatis
    MyBatis
    Spring
    Hibernate学习
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6401074.html
Copyright © 2020-2023  润新知