๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/LeetCode

[LeetCode] Single Number

๋ฌธ์ œ๋งํฌ

 

Single Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ single number์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. (์ค‘๋ณต๋œ ์š”์†Œ๊ฐ€ ์—†๋Š” ๊ฐ’)

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋‹จ์ˆœํ•˜๊ฒŒ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๊ณ  ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ํ’€์ดํ•˜์˜€๋‹ค.
nums.sort((a, b) => a - b);
    
for(let i = 0; i < nums.length; i++){
    if(nums[i] !== nums[i-1] && nums[i] !== nums[i+1]) return nums[i];
}โ€‹

์ฒ˜์Œ ์‹œ์ž‘์€ undefinded !== nums[0] && nums[0] !== nums[1]
๋งˆ์ง€๋ง‰์€ nums[nums.length - 2] !== nums[nums.length - 1] && nums[nums.length - 1] !== undefined
์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ์ˆซ์ž๊ฐ€ ์œ ์ผํ•œ ๊ฐ’์ด๋˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ ์œ ์ผํ•œ ๊ฐ’์ด๋˜ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์ดํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค.
ํ˜„์žฌ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์„ ๋‚˜๋ˆ„๊ณ , ๋‚˜๋ˆˆ ๋ฐฐ์—ด์„ ํ•ฉ์ณ์„œ ํ˜„์žฌ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.
[1,2,3,4,5] => ํ˜„์žฌ๊ฐ’์ด 3์ผ๋•Œ [1,2] [4,5]๋ฅผ ๋‚˜๋ˆ„๊ณ  ํ•ฉ์ณ์„œ [1,2,4,5]์— 3์ด ์žˆ๋Š”์ง€ ํŒŒ์•…
for(let i = 0; i < nums.length; i++){
    prevArr = nums.slice(0, i);
    nextArr = nums.slice(i+1, nums.length);
    if(!prevArr.concat(nextArr).includes(nums[i])) return nums[i];
}โ€‹

๋ฐฐ์—ด์„ ์ƒˆ๋กœ concatํ•˜๋Š” ๊ณผ์ •์—์„œ O(n) & for๋ฌธ์—์„œ O(n)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋ฏ€๋กœ
O(n^2)์ด๊ณ , ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋ฏ€๋กœ ๊ณต๊ฐ„๋ณต์žก๋„๋„ ๋งค์šฐ ๋–จ์–ด์ง„๋‹ค.



 

// ํšจ์œจ์  ํ’€์ด

/**
 * @param {number[]} nums
 * @return {number}
 */

var singleNumber = function(nums) {
    nums.sort((a, b) => a - b);
    
    for(let i = 0; i < nums.length; i++){
        if(nums[i] !== nums[i-1] && nums[i] !== nums[i+1]) return nums[i];
    }
    
};

 

// ๋น„ํšจ์œจ์  ํ’€์ด

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
    for(let i = 0; i < nums.length; i++){
        prevArr = nums.slice(0, i);
        nextArr = nums.slice(i+1, nums.length);
        if(!prevArr.concat(nextArr).includes(nums[i])) return nums[i];
    }
};

'์ฝ”๋”ฉํ…Œ์ŠคํŠธ > LeetCode' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[LeetCode] Combination Sum  (0) 2022.07.11
[LeetCode] Min Cost Climbing Stairs  (0) 2022.07.10
[LeetCode] Fibonacci Number  (0) 2022.07.06
[LeetCode] Longest Consecutive Sequence  (0) 2022.07.05
[LeetCode] Candy  (0) 2022.07.04