Skip to content

Commit f8d1d3a

Browse files
authored
Merge pull request #1171 from froggy1014/main
[froggy1014] WEEK 01 Solutions
2 parents c6cbf04 + 9252f9c commit f8d1d3a

File tree

5 files changed

+98
-0
lines changed

5 files changed

+98
-0
lines changed

contains-duplicate/froggy1014.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Set을 사용한 중복값 제거 후 길이 비교
2+
function containsDuplicate(nums) {
3+
const numSet = new Set(nums);
4+
return numSet.size !== nums.length;
5+
}
6+
7+
console.log(containsDuplicate([1, 2, 3, 1])); // true
8+
console.log(containsDuplicate([1, 2, 3, 4])); // false
9+
console.log(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2])); // true

house-robber/froggy1014.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function (nums) {
6+
if (nums.length === 0) return 0;
7+
if (nums.length === 1) return nums[0];
8+
9+
const dp = new Array(nums.length + 1);
10+
dp[0] = 0;
11+
dp[1] = nums[0];
12+
for (let i = 2; i < dp.length; i++) {
13+
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
14+
}
15+
return dp[dp.length - 1];
16+
};
17+
18+
const nums = [2, 7, 9, 3, 1];
19+
20+
console.log(rob(nums));
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
6+
// 시간복잡도: O(n)
7+
var longestConsecutive = function (nums) {
8+
let longest = 0;
9+
10+
let set = new Set(nums);
11+
12+
for (let num of nums) {
13+
if (set.has(num - 1)) {
14+
continue;
15+
}
16+
17+
let count = 1;
18+
let currentNum = num;
19+
20+
while (set.has(currentNum + 1)) {
21+
count++;
22+
currentNum++;
23+
}
24+
longest = Math.max(longest, count);
25+
}
26+
return longest;
27+
};
28+
29+
console.log(longestConsecutive([100, 4, 200, 1, 3, 2])); // 4
30+
console.log(longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1])); // 9
31+
console.log(longestConsecutive([1, 0, 1, 2])); // 3

top-k-frequent-elements/froggy1014.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function (nums, k) {
7+
const map = new Map();
8+
for (let n = 0; n < nums.length; n++) {
9+
map.has(nums[n])
10+
? map.set(nums[n], map.get(nums[n]) + 1)
11+
: map.set(nums[n], 1);
12+
}
13+
14+
return Array.from(map.entries())
15+
.sort(([key1, value1], [key2, value2]) => value2 - value1)
16+
.slice(0, k)
17+
.map((v) => v[0]);
18+
};
19+
20+
console.log(topKFrequent([1, 1, 1, 2, 2, 3], 2));

two-sum/froggy1014.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
var twoSum = function (nums, target) {
7+
let map = new Map();
8+
for (let idx = 0; idx < nums.length; idx++) {
9+
const rest = target - nums[idx];
10+
if (map.has(rest)) {
11+
return [map.get(rest), idx];
12+
}
13+
map.set(nums[idx], idx);
14+
}
15+
return [];
16+
};
17+
18+
console.log(twoSum([2, 11, 15, 7], 9));

0 commit comments

Comments
 (0)