๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿƒ algorithm/leetcode

LeetCode 136 - Single Number (Easy)

by HandHand 2021. 3. 3.

๋ฌธ์ œ

LeetCode - 104๋ฒˆ

ํ’€์ด ๊ณผ์ •

ํ•˜๋‚˜์˜ ์ˆซ์ž๋งŒ 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;
};
๋ฐ˜์‘ํ˜•

๐Ÿ’ฌ ๋Œ“๊ธ€