본문 바로가기

코딩테스트/LeetCode

[LeetCode] Single Number II

문제링크

 

Single Number II - 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

 

숫자를 담은 배열 nums가 주어진다.
nums에는 single number을 제외한 나머지 요소가 모두 3개씩 들어있다.
ex) nums = [1,1,1,2,2,2,3,3,3,4]

이때 single number을 구하여라.

접근 방법

nums의 중복값을 제거하고 배열의 합을 구한 뒤 3을 곱하면 
nums 배열의 합과 2개의 single number만큼 차이가 나게 될 것이라는 아이디어로 접근하였다.

1. 중복값 제거
const uniqueNums = [...new Set(nums)];​


2. 기존 nums의 합과 중복값을 제거한 uniqueNums의 합을 구하기

const sumNums = nums.reduce((acc, cur) => acc += cur);
const sumUniqueNums = uniqueNums.reduce((acc, cur) => acc += cur);


3. (uniqueNums의 합 * 3 - nums의 합) / 2 로 single number 구하기

const output = ((sumUniqueNums * 3) - sumNums) / 2;


 

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
    const uniqueNums = [...new Set(nums)];
    const sumNums = nums.reduce((acc, cur) => acc += cur);
    const sumUniqueNums = uniqueNums.reduce((acc, cur) => acc += cur);
    
    const output = ((sumUniqueNums * 3) - sumNums) / 2;
    
    return output
};

'코딩테스트 > LeetCode' 카테고리의 다른 글

[LeetCode] Number Of Matching Subsequences  (0) 2022.07.20
[LeetCode] Pascals Triangle  (0) 2022.07.19
[LeetCode] Matchsticks To Square  (0) 2022.07.12
[LeetCode] Combination Sum  (0) 2022.07.11
[LeetCode] Min Cost Climbing Stairs  (0) 2022.07.10