位操作-leetcode 371 Sum or Two Integers

原題鏈接:Sum of Two Integers


分析:實現加號運算符,採用的是位操作,分三步:

第一步a^b得到一個值res

第二步(a&b)<<1得到一個值表示進位

第三步,如果有進位表示res還需要加上進位的值,否則res就是最終結果,注意res加上進位值也有可能有進位,所以遞歸getSum()操作。


題解:

class Solution {
public:
    int getSum(int a, int b) {
        /*
            Time Complexity:O(1)
            Space Complexity:O(1)
        */
        int res=a^b;
        int tmp=(a&b)<<1;
        if(tmp!=0)return getSum(res,tmp);
        return res;
    }
};


發佈了61 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章