diff --git a/solution/0400-0499/0476.Number Complement/README.md b/solution/0400-0499/0476.Number Complement/README.md index 152830c396a89..8b8f85a4d1b9a 100644 --- a/solution/0400-0499/0476.Number Complement/README.md +++ b/solution/0400-0499/0476.Number Complement/README.md @@ -122,6 +122,48 @@ function findComplement(num: number): number { } ``` +#### JavaScript + +```js +/** + * @param {number} num + * @return {number} + */ +var findComplement = function (num) { + return num ^ (2 ** num.toString(2).length - 1); +}; +``` + + + + + + + +### 方法二:位运算(取反+按位与) + + + +#### TypeScript + +```ts +function findComplement(num: number): number { + return ~num & (2 ** num.toString(2).length - 1); +} +``` + +#### JavaScript + +```js +/** + * @param {number} num + * @return {number} + */ +function findComplement(num) { + return ~num & (2 ** num.toString(2).length - 1); +} +``` + diff --git a/solution/0400-0499/0476.Number Complement/README_EN.md b/solution/0400-0499/0476.Number Complement/README_EN.md index 5e9d87c4bc1d5..b3a36790489de 100644 --- a/solution/0400-0499/0476.Number Complement/README_EN.md +++ b/solution/0400-0499/0476.Number Complement/README_EN.md @@ -116,6 +116,48 @@ function findComplement(num: number): number { } ``` +#### JavaScript + +```js +/** + * @param {number} num + * @return {number} + */ +var findComplement = function (num) { + return num ^ (2 ** num.toString(2).length - 1); +}; +``` + + + + + + + +### Solution 2: Bit Manipulation. Inversion + AND + + + +#### TypeScript + +```ts +function findComplement(num: number): number { + return ~num & (2 ** num.toString(2).length - 1); +} +``` + +#### JavaScript + +```js +/** + * @param {number} num + * @return {number} + */ +function findComplement(num) { + return ~num & (2 ** num.toString(2).length - 1); +} +``` + diff --git a/solution/0400-0499/0476.Number Complement/Solution.js b/solution/0400-0499/0476.Number Complement/Solution.js new file mode 100644 index 0000000000000..8593fe3f504be --- /dev/null +++ b/solution/0400-0499/0476.Number Complement/Solution.js @@ -0,0 +1,7 @@ +/** + * @param {number} num + * @return {number} + */ +var findComplement = function (num) { + return num ^ (2 ** num.toString(2).length - 1); +}; diff --git a/solution/0400-0499/0476.Number Complement/Solution2.js b/solution/0400-0499/0476.Number Complement/Solution2.js new file mode 100644 index 0000000000000..464c516dba957 --- /dev/null +++ b/solution/0400-0499/0476.Number Complement/Solution2.js @@ -0,0 +1,7 @@ +/** + * @param {number} num + * @return {number} + */ +function findComplement(num) { + return ~num & (2 ** num.toString(2).length - 1); +} diff --git a/solution/0400-0499/0476.Number Complement/Solution2.ts b/solution/0400-0499/0476.Number Complement/Solution2.ts new file mode 100644 index 0000000000000..f1f7b1acf1d6c --- /dev/null +++ b/solution/0400-0499/0476.Number Complement/Solution2.ts @@ -0,0 +1,3 @@ +function findComplement(num: number): number { + return ~num & (2 ** num.toString(2).length - 1); +}