Skip to content

Commit 0c58d05

Browse files
authored
Merge pull request #1686 from jun0811/main
[jun0811] WEEK 01 solutions
2 parents 1ae6771 + 416793e commit 0c58d05

File tree

6 files changed

+122
-0
lines changed

6 files changed

+122
-0
lines changed

contains-duplicate/jun0811.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+
* @return {boolean}
4+
*/
5+
var containsDuplicate = function (nums) {
6+
const count = [];
7+
let res = false;
8+
9+
for (const num of nums) {
10+
if (count[num]) {
11+
res = true;
12+
break;
13+
} else {
14+
count[num] = 1;
15+
}
16+
}
17+
return res;
18+
};

house-robber/jun0811.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function(nums) {
6+
const n = nums.length;
7+
if (n === 1) return nums[0];
8+
if (n === 2) return Math.max(nums[0], nums[1]);
9+
const dp = [nums[0],nums[1],nums[2] + nums[0]];
10+
11+
for(let i =3; i < n; i++) {
12+
const tmp1 = dp[i-2] + nums[i]
13+
const tmp2 = dp[i-3] + nums[i]
14+
dp[i] = tmp1> tmp2 ? tmp1 : tmp2
15+
}
16+
return dp[n-1] > dp[n-2] ? dp[n-1] : dp[n-2]
17+
};

longest-common-subsequence/jun0811.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var longestConsecutive = function (nums) {
6+
const set = new Set();
7+
8+
// set 생성 : O(n)
9+
for (const num of nums) {
10+
set.add(num);
11+
}
12+
13+
let res = 0;
14+
15+
// set 순회 : O(n)
16+
for (const num of set) {
17+
if (set.has(num - 1)) continue;
18+
let tmp = 1;
19+
let cur = num;
20+
// While 루프 전체: O(n)
21+
while (true) {
22+
const v = (cur += 1);
23+
if (set.has(v)) tmp += 1;
24+
else break;
25+
}
26+
if (tmp > res) res = tmp;
27+
}
28+
return res;
29+
};

number-of-1-bits/jun0811.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var hammingWeight = function (n) {
6+
let res = 0;
7+
while (n > 0) {
8+
res += n & 1;
9+
n = n >> 1; // 나누기 2
10+
}
11+
return res;
12+
};

top-k-frequent-elements/jun0811.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 countMap = new Map();
8+
for (const num of nums) {
9+
if (countMap.has(num)) {
10+
countMap.set(num, countMap.get(num) + 1);
11+
} else {
12+
countMap.set(num, 1);
13+
}
14+
}
15+
const countArr = [...countMap];
16+
countArr.sort((a, b) => b[1] - a[1]);
17+
18+
const res = countArr.slice(0, k).map((count) => count[0]);
19+
return res;
20+
};

two-sum/jun0811.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time Complexity : O(N^2)
2+
3+
var twoSum = function (nums, target) {
4+
const l = nums.length;
5+
for (let i = 0; i < l; i++) {
6+
for (let j = i + 1; j < l; j++) {
7+
const value = nums[i] + nums[j];
8+
if (value == target) return [i, j];
9+
}
10+
}
11+
};
12+
13+
// Time Complexity : O(N)
14+
15+
var twoSum = function (nums, target) {
16+
const Map = {};
17+
18+
nums.forEach((num, idx) => {
19+
Map[num] = idx;
20+
});
21+
22+
for (const idx in nums) {
23+
const value = target - nums[idx];
24+
if (Map[value] >= 0 && Map[value] != idx) return [+idx, Map[value]];
25+
}
26+
};

0 commit comments

Comments
 (0)