๋ฌธ์
ํ์ด ๊ณผ์
ํ๋์ ์ซ์๋ง 1๊ฐ๊ฐ ์กด์ฌํ๊ณ ๋๋จธ์ง ์ซ์๋ค์ 2๊ฐ์ฉ ์กด์ฌํ๋ ๋ฐฐ์ด์์
1๊ฐ ์กด์ฌํ๋ ์ซ์๋ฅผ single number
๋ผ๊ณ ํ์ ๋ ํด๋น ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
๋ฌธ์ ์กฐ๊ฑด์์ O(N)
์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผํฉ๋๋ค.
์ด๋ฅผ ์ํด์ ๋นํธ ์ฐ์ฐ์
์ค์์ xor
๋ฅผ ํ์ฉํ๋๋ก ํฉ๋๋ค.xor
์ฐ์ฐ์ ์๋ก ๋ค๋ฅธ ๋นํธ์์๋ง 1์ด๊ณ ๋๋จธ์ง๋ 0์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ซ์๋ผ๋ฆฌ xor
์ ํ๋ฉด 0์ด ๋ฉ๋๋ค.
๋ฐ๋ผ์ single number
๋ฅผ ์ ์ธํ ๋ชจ๋ ์๋ 2๊ฐ์ฉ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ xor
๊ฒฐ๊ณผ 0์ด ๋๊ณ 0 ^ single number = single number
๋ก ๊ตฌํ ์ ์์ต๋๋ค.
์ฝ๋
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function (nums) {
const answer = nums.reduce((acc, num) => acc ^ num);
return answer;
};
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 5 - Longest Palindromic Substring (Medium) (0) | 2021.03.03 |
---|---|
LeetCode 206 - Reverse Linked List (Easy) (0) | 2021.03.03 |
LeetCode 104 - Maximum Depth of Binary Tree (Easy) (0) | 2021.03.03 |
LeetCode 102 - Binary Tree Level Order Traversal (Medium) (0) | 2021.03.03 |
LeetCode 617 - Merge Two Binary Trees (Easy) (0) | 2021.03.03 |
๐ฌ ๋๊ธ