LeetCode Javascript實現 344. Reverse String 292. Nim Game 371. Sum of Two Integers

344. Reverse String

/**
* @param {string} s
* @return {string}
*/
var reverseString = function(s) {
return s.split("").reverse().join("");
};

 


292. Nim Game

尼姆遊戲仍是頗有意思的,這題有不少地方能夠深刻理解學習

/**
* @param {number} n
* @return {boolean}
*/
var canWinNim = function(n) {
if(0 === n%4){
return false;
}
return true;

};

//這題解題的過程當中,LeetCode提示說和0進行比較的時候使用===而不是==


 371. Sum of Two Integers 

這題主要考驗的是位運算spa

①異或xor的逆運算是它自己,兩次異或同一個數時結果不變。在學習位運算的時候,咱們知道XOR的一個重要特性是不進位加法,那麼只要再找到進位,將其和XOR的結果加起來,就是最後的答案。/**code

 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var getSum = function(a, b) {
    var c1 = a^b;
    var d = a&b;
    while(d!==0){
        d = d<<1;
        c2 = c1^d;
        d = c1&d;
        c1 = c2;
    }
    
    return c1;
};

//總之就是
 0 1 1 — a ==3
 1 0 1 — b ==5
——————————
 1 1 0c1 0 0 1 — d
 0 1 0 — d=d<<1
 1 0 0 — c2=c1^d
 0 1 0 — d=c1&d
 1 0 0 — c1=c2
——————————
 1 0 0 — d=d<<1
 0 0 0 — c2=c1^d
 1 0 0 — d=c1&d
 0 0 0 — c1=c2
——————————
1 0 0 0 — d=d<<1
1 0 0 0 — c2=c1^d
0 0 0 0— d=c1&d
1 0 0 0 — c1=c2
//關鍵就是異或—不進位加法,與運算—進位處爲1,與運算再<<1則至關於進位數, a,b兩個數字將axorb後再加上a&b的值,一直重複到沒有進位(a&b==0)就計算完畢。
相關文章
相關標籤/搜索