๐ŸŒ• ๐ŸŒ— 50. Pow(x, n)

ๅžไฝ›็ซฅๅญ2022ๅนด10ๆœˆ10ๆ—ฅ
  • algorithm
  • extra
  • ๅฟซ้€Ÿๅน‚
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ• ๐ŸŒ— 50. Pow(x, n)

้šพๅบฆ: ๐ŸŒ• ๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img.png


่งฃๆณ•

class Solution {
    public double myPow(double x, int n) {
        // ๆ€่ทฏ๏ผš
        // ๅฟซ้€Ÿๅน‚
        // x^n = x^(n / 2) * x^(n / 2) ๏ผŒๅฆ‚ๆžœ n % 2 == 1 ่ฟ˜้œ€่ฆ * cur
        if(x == 0) {
            return 0;
        }
        if(n == 0) {
            return 1;
        }
        int flag = 1;
        long nn = (long) n; // ๆŽ’้™ค่ดŸๆ•ฐ่Œƒๅ›ด็š„ๅฝฑๅ“
        if(n < 0) {
            nn = -nn;
            flag = -1;
        }
        double res = 1.0;
        double cur = (double)x;
        // System.out.println(nn);
        while(nn > 0) {
            long left = nn % 2;
            nn /= 2;
            if(left == 1) {
                res *= cur; // ๅ•ๅ‡บๆฅ๏ผŒ่ฟ˜้œ€่ฆๅคšไน˜ไธ€ๆฌก
            }
            cur *= cur;
        }
        // System.out.println(res);
        if(flag > 0) {
            return res;
        } else {
            return (double)1 / res;
        }
    }
}

่พ“ๅ‡บ

img_1.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/10/10 ไธ‹ๅˆ8:43:48
่ดก็Œฎ่€…: liuxianzhishou