[LeetCode] Single Number

이조은·2020년 12월 12일
0

Code Kata

목록 보기
7/15

문제 확인하기

문제

nums 숫자 배열 매개 변수를 받는다. 이때 한 개의 요소 빼고 다른 요소들은 두 번씩 등장한다. 한 개만 등장하는 요소를 구하라.

Input: nums = [2,2,1]
Output: 1
Example 2:

Input: nums = [4,1,2,1,2]
Output: 4
Example 3:

Input: nums = [1]
Output: 1

문제 풀이

🙆🏻‍♀️ 첫 번째 풀이

한 줄로 풀어버리는 스킬을 쓰려했지만.. 생각나지 않았다.

result라는 빈 배열을 만들었다. 그리고 만약에 nums의 요소가 result에 없다면 추가하고, 있다면 result에서 해당 요소의 인덱스를 검색해 제거하는 로직을 짜보았다.

var singleNumber = function(nums) {
    let result = [];
    for (let i = 0; i < nums.length; i++) {
        if (result.indexOf(nums[i])<0) {
          result.push(nums[i])
        }
      else {
        result.splice(result.indexOf(nums[i]),1)
      }
    }
  return result[0]
};

항상 헷갈리는 splice vs slice

  • Array​.prototype​.slice(start[, end])
    slice() 메소드는 begin부터 end 전까지의 복사본을 새로운 배열 객체로 반환한다. 이 메소드는 원본 배열을 수정하지 않는다.
  • Array​.prototype​.splice(start[, deleteCount[, item1[, item2[, ...]]]])
    splice() 메소드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다. 이 메소드는 원본 배열 자체를 수정한다.

모범 답안

☝️ 첫 번째 모범 답안

let singleNumber = function(nums){
    let result = 0;
    for(let i = 0; i < nums.length; i++){
       result = result ^ nums[i]
    }
    return result
}
singleNumber([4,1,2,1,2])
profile
싱글벙글

0개의 댓글