LeetCode Javascript実現344.Reverse String 292.Nim Game 371.Sum of Two Integers
4119 ワード
344.Reverse String
292.Nim Game
ニムゲームはやはり面白いです.この問題は理解できるところが多いです.
この問題は主にビット演算をテストします.
①異種またはxorの逆演算はそれ自体であり、2回の異数または同じ数の場合は結果は変わりません.ビット演算を勉強する時、XORの重要な特性は進数加算ではないことを知っています.次に進数を見つけたら、XORの結果と合わせて、最後の答えになります.
/**
* @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 この問題は主にビット演算をテストします.
①異種またはxorの逆演算はそれ自体であり、2回の異数または同じ数の場合は結果は変わりません.ビット演算を勉強する時、XORの重要な特性は進数加算ではないことを知っています.次に進数を見つけたら、XORの結果と合わせて、最後の答えになります.
* @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 0 — c1
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) 。