Skip to main content

17 posts tagged with "array"

View All Tags

· One min read

https://leetcode.com/problems/majority-element/

Solution 1

/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function (nums) {
const element = {};

for (const num of nums) {
if (element[num]) {
element[num]++;
} else {
element[num] = 1;
}
}

let max = 0;
let targetNum = '';

for (let e in element) {
if (element[e] > max) {
max = element[e];
targetNum = e;
}
}

return Number(targetNum);
};

· One min read

https://leetcode.com/problems/remove-element/

Solution 1

/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function (nums, val) {
let remainElement = 0;

for (let i = 0; i < nums.length; i++) {
if (nums[i] === val) {
nums[i] = '_';
} else {
remainElement++;
}
}

nums.sort();

return remainElement;
};

Runtime: 76 ms

Memory Usage: 41.8 MB

Solution 2

/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function (nums, val) {
let samecount = 0;

for (let i = 0; i < nums.length; i++) {
if (nums[i] === val) {
samecount++;
} else {
nums[i - samecount] = nums[i];
}
}
return nums.length - samecount;
};

Runtime: 105 ms

Memory Usage: 42.5 MB

· One min read

https://leetcode.com/problems/permutations/

Solution 1

/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function (nums) {
const results = [];

const permutations = (selected) => {
// nums의 모든 숫자가 다 쓰였을 경우
if (selected.length === nums.length) {
results.push(selected);
return;
}

for (let i = 0; i < nums.length; i++) {
// 중복인 숫자는 제외하고 추가
if (!selected.includes(nums[i])) {
permutations([...selected, nums[i]]);
}
}
};

permutations([]);

return results;
};

· 2 min read

https://leetcode.com/problems/merge-sorted-array/

Solution 1

/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
var merge = function (nums1, m, nums2, n) {
while (n > 0) {
// 뒤에서 부터 도는게 핵심

if (nums1[m - 1] > nums2[n - 1]) {
// nums1이 nums2보다 클 경우, nums1의 자리를 뒤로 배치
nums1[m + n - 1] = nums1[m - 1];
m--;
} else {
// nums1이 nums2보다 작을 경우, nums1의 자리에 num2 배치
nums1[m + n - 1] = nums2[n - 1];
n--;
}
}
};

아래처럼 알고리즘이 돌아감

const nums1 = [4, 5, 6, 0, 0, 0];
const m = 3;
const nums2 = [1, 2, 3];
const n = 3;

merge(nums1, m, num2, n);

// 풀이
// [4, 5, 6, 0, 0, 6]
// [4, 5, 6, 0, 5, 6]
// [4, 5, 6, 4, 5, 6]
// [4, 5, 3, 4, 5, 6]
// [4, 2, 3, 4, 5, 6]
// [1, 2, 3, 4, 5, 6]