1. 程式人生 > >LintCode 777. Valid Perfect Square

LintCode 777. Valid Perfect Square

clas -s ble lin osi ret blog returns als

Given a positive integer num, write a function which returns True if num is a perfect square else False.

樣例

For example:
Given num = 16
Returns True

解法一:牛頓叠代器

class Solution {
public:
    /**
     * @param num: a positive integer
     * @return: if num is a perfect square else False
     */
    bool
isPerfectSquare(int num) { // write your code here double pre=0,res=1; while(pre!=res) { pre=res; res=(res+num/res)/2; } int t=(int)res; return t*t==num; } };

解法二:二分法

class Solution {
public:
    /**
     * @param num: a positive integer
     * @return: if num is a perfect square else False
     
*/ bool isPerfectSquare(int num) { // write your code here long left=0,right=num,mid; while(left<=right) { mid=left+(right-left)/2; long res=mid*mid; if(res<num) { left=mid+1; }
else if(res>num) { right=mid-1; } else { return true; } } return false; } };

LintCode 777. Valid Perfect Square