Single Number
배열 요소에 짝 없이 혼자 있는 요소를 찾는 문제.
하나씩 뽑아서 짝을 찾아 제거하는 방식으로 풀었는데, 좀 더 좋은 방법이 없을까...
leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/549/
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
// 반복문은 최대로 돌아도 주어진 배열 길이의 반만큼만 돌면 된다.
const count = Math.floor(nums.length/2);
for(let i = 0; i < count; i++){
const item = nums.shift();
const index = nums.findIndex((n)=> n===item);
if(index > -1) {
nums.splice(index, 1);
} else {
// 짝을 찾지 못한 경우 해당 요소가 single number다.
return item;
}
}
// 반복문이 끝까지 돈 경우 배열에는 요소가 하나만 남아있고,
// 해당 요소가 single number다.
return nums[0];
};
Intersection of Two Arrays II
두 배열의 교집합을 찾는 문제다.
https://leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/674/
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
const answer = [];
// 더 짧은 배열로 반복을 돌면 좋을 것 같다.
let short = nums1;
let long = nums2;
if (nums1.length > nums2.length){
short = nums2;
long = nums1;
}
for(let n1 of short) {
const index = long.indexOf(n1)
if(index > -1) {
const deleted = long.splice(index, 1);
answer.push(deleted[0])
}
}
return answer;
};
'Web development > Algorithm' 카테고리의 다른 글
[LeetCode] Move Zeros, Two Sum (0) | 2021.01.15 |
---|---|
[LeetCode] Plus One (0) | 2021.01.12 |
[LeetCode] Rotate Array, Contains Duplicate (0) | 2021.01.08 |
[LeetCode] Remove Duplicates From Sorted Array (0) | 2021.01.06 |
[LeetCode] Best Time to Buy and Sell Stock II (0) | 2021.01.06 |
댓글