本文主要是介绍LeetCode-367. Valid Perfect Square,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:https://leetcode.com/problems/valid-perfect-square/?tab=Description
Given a positive integer num, write a function which returns True if num is a perfect square else False.
给定一个正数,如果它是某一个数的平方则返回true,否则返回false.
分析:二分查找。假设它是某数的平方,该数的结果在left和right之间,不断循环,mid为left和right的中间值。如果mid的平方等于num,说明true。如果mid的平方小于num且mid+1的平方大于num,说明num不是平方数。如果mid的平方小于num,说明结果在mid右边,令left=mid+1;否则在mid左边,right=mid-1.
C++代码:
class Solution {
public:bool isPerfectSquare(int num) {if(num<=0) return false;else if(num==1) return true;else{int left=1;int right=num/2;while(left<=right){long mid=(left+right)/2;if(mid*mid==num) return true;else if(mid*mid>num) right=mid-1;else left=mid+1;}return false;}}
};
这篇关于LeetCode-367. Valid Perfect Square的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!