๐ŸŒ•๐ŸŒ— 371. ไธคๆ•ดๆ•ฐไน‹ๅ’Œ

ๅžไฝ›็ซฅๅญ2022ๅนด10ๆœˆ10ๆ—ฅ
  • algorithm
  • ไฝ่ฟ็ฎ—
  • ๆ‰พ่ง„ๅพ‹
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ•๐ŸŒ— 371. ไธคๆ•ดๆ•ฐไน‹ๅ’Œ

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

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

img_50.png


่งฃๆณ•

class Solution {
    public int getSum(int a, int b) {
        // ๆ€่ทฏ๏ผš
        // ไฝ่ฟ็ฎ—
        // ้ฆ–ๅ…ˆๆœ€็ฎ€ๅ•็š„ a & b ๅ‡ไธบไธ€ไฝไบŒ่ฟ›ๅˆถๆ•ฐ๏ผŒๆปก่ถณ
        // a    b   | y  c
        // 0    0   | 0  0
        // 0    1   | 1  0 
        // 1    0   | 1  0
        // 1    1   | 0  1
        // ๅณ y = a ^ b; c = (a & b) << 1
        // ๆ‰ฉๅฑ•ๅˆฐๅคšไฝ่ฟ็ฎ—๏ผŒไพ‹๏ผŒa = 11(1011), b = 7(0111), y = 18(1 0010)๏ผŒ้ชŒ่ฏ๏ผš
        // a = 1011, b = 0111, ๆฑ‚ a + b
        // --> c = ((a & b) << 1) = (0011) << 1 = (0110)
        // --> y = a ^ b = (1100)
        // --> ๆฑ‚ c + y
        while(a != 0) {
            int c = ((a & b) << 1);
            int y = a ^ b;
            a = c;
            b = y;
        }
        return b;
    }
}

่พ“ๅ‡บ

img_49.png

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