๋ฌธ์
Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra space.
์ ์์ ๋ฐฐ์ด์์ ๋์ผํ๊ฒ ์ง์ง์ด์ง์ง ์๋ ํ๋์ ์๋ฅผ ์ฐพ์ ๋ฐํํ๋ ๋ฌธ์ .
ํ์ด
let result = nums[0];
for (let i = 1; i < nums.length; i++) {
result = result ^ nums[i];
}
return result;
๊ฐ๋จํด๋ณด์ด๋ฉด์๋ ๋ฌํ๊ฒ ๊ฐ๋จํ์ง ์์์ ๊ฒฐ๊ตญ ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋์๋ค ๐
๋
ผ๋ฆฌ ์ฐ์ฐ์์ XOR์ ๊ฐ๋
์ ์๊ณ ์๋ค๋ฉด ๋ฌด์ง์ฅ ๊ฐ๋จํ๊ฒ ํ๋ฆฌ๋ ๋ฌธ์ ์๋ค.
์ง๊ธ๊น์ง ๋นํธ์ฐ์ฐ์๋ ๋ณ๋ก ์จ๋ณธ ์ ์ด ์์๊ธฐ์..
๋นํธ์ฐ์ฐ์ ์ค XOR ์ฐ์ฐ์(^)์ ๋ํด ๊ฐ๋ตํ๊ฒ ๊ธฐ๋กํด๋ณธ๋ค.
์ฐ์ ๋ฐฐํ์ ๋
ผ๋ฆฌํฉ์ธ XOR์ ์ง๋ฆฌํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ฐ์ง ์์ ๋ ์ฐธ(1)์ ๋ฐํํ๋ค.
์ด์ ๋ ์๋ฅผ ๋นํธ๋ก ๋ฐ์ ธ์ ๋ค์์๋ถํฐ ๊ฐ์ง ์์ผ๋ฉด 1, ๊ฐ์ผ๋ฉด 0 ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์์ผ๋ก ๊ณ์ฐ์ด ๋๋.. ๊ทธ๋ฐ ์.
์๋์ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ ๋
[4,1,2,1,2]
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ ๊ฒฐ๊ณผ๋ฅผ ํ์ด์ ์จ๋ณด๋ฉด,
1. 4์ 1์ ๊ฐ์ง ์์ผ๋(์ฐธ) ๋ํ๋ค.
2. (4+1)๊ณผ 2๋ ๊ฐ์ง ์์ผ๋(์ฐธ) ๋ํ๋ค.
3. (4+1+2)์ 1์ ๋จผ์ ๋ํด์ง 1๊ณผ ๊ฒน์น๋(๊ฑฐ์ง) ๋บ๋ค.
4. (4+2)์ 2๋ ๋จผ์ ๋ํด์ง 2๊ฐ ๊ฒน์ณ๋(๊ฑฐ์ง) ๋บ๋ค.
5. 4๋ง ๋จ๋๋ค.
์ด๋ฐ ์์ผ๋ก ์ฝ๋๊ฐ ์งํ๋๋ค.
์ํค๋ฐฑ๊ณผ๋ฅผ ๋ณด๋ค๋ณด๋ ์ด๋ฐ ์์ผ๋ก ์ง์ ํ์ ํจ๋ฆฌํฐ๋ฅผ ๊ณ์ฐํด์ ์ค๋ฅ ๊ฒ์ถ์ ์ฌ์ฉํ๋ค๊ณ ํ๊ณ ,
์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง ํจํธ๋ฆฌ ํธ๋ฆฌ๋ ์๋ค๊ณ ํ๋ค. ํฅ๋ฏธ๋ก์ด ์ฌ์ค ๐ค
'๐ Algorithm > LeetCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] leetCode : Reverse Words in a String (0) | 2022.05.16 |
---|---|
[JavaScript] leetCode : Implement strStr() (0) | 2022.05.12 |
[JavaScript] leetCode : Longest Common Prefix (0) | 2022.05.09 |
[JavaScript] leetCode : Linked List Cycle II (3) | 2022.05.03 |
[JavaScript] leetCode : Valid Mountain Array (3) | 2022.05.02 |
Comment