题目大意:判断一个数是否是平方数。不能使用开根号函数。
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:
1 2 |
Input: 16 Returns: True |
Example 2:
1 2 |
Input: 14 Returns: False |
Idea:
Binary search
Solution:
C++
Time complexity: O(log(num))
Space complexity: O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Author: Huahua // Runtime: 0 ms class Solution { public: bool isPerfectSquare(int num) { long l = 1; long r = num + 1; while (l < r) { long m = l + (r - l) / 2; long t = m * m; if (t == num) return true; else if (t > num) r = m; else l = m + 1; } return false; } }; |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment