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])