[LeetCode]367. Valid Perfect Square

    xiaoxiao2021-03-26  32

    https://leetcode.com/problems/valid-perfect-square/

    判断一个数是不是可以开平方

    二分查找

    public class Solution { // 先开long再说;多用乘法少用除法,比如判断平方数,mid * mid == num public boolean isPerfectSquare(int num) { int beg = 1; int end = num; while (beg <= end) { long mid = (long) beg + (end - beg) / 2; if (mid * mid == num) { return true; } else if (mid * mid < num) { beg = (int) mid + 1; } else { end = (int) mid - 1; } } return false; } }

    平方数 = 1 + 3 + 5 + 7......

    public class Solution { public boolean isPerfectSquare(int num) { int i = 1; while (num > 0) { num -= i; i += 2; } return num == 0; } }

    牛顿平方法

    >>> 无符号右移

    public class Solution { public boolean isPerfectSquare(int num) { long x = num; while (x * x > num) { x = (x + num / x) >>> 1; } return x * x == num; } }

    转载请注明原文地址: https://ju.6miu.com/read-663900.html

    最新回复(0)