Skip to content

Commit 29ef951

Browse files
authored
Merge pull request #1712 from jangwonyoon/main
2 parents 7ef534d + 05ffb72 commit 29ef951

File tree

4 files changed

+157
-0
lines changed

4 files changed

+157
-0
lines changed

contains-duplicate/jangwonyoon.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*/
5+
var containsDuplicate = function(nums) {
6+
const sortedNums = nums.sort((a, b) => a - b);
7+
const length = sortedNums.length - 1;
8+
9+
for (let i = 0; i < length; i++) {
10+
const left = nums[i];
11+
const right = nums[i + 1];
12+
13+
if (left === right) {
14+
return true;
15+
}
16+
}
17+
18+
return false;
19+
};
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* solve 1
3+
*
4+
* 시간 복잡도: O(n log n)
5+
* 공간 복잡도: O(n)
6+
*
7+
* @param {number[]} nums
8+
* @return {number}
9+
*/
10+
var longestConsecutive = function(nums) {
11+
// 예외
12+
if (nums.length === 0) {
13+
return 0;
14+
}
15+
16+
const sortedArr = [...new Set(nums)].sort((a, b) => a - b);
17+
18+
let result = 1;
19+
let consecutive = 1;
20+
21+
for (let i = 0; i < sortedArr.length - 1; i++) {
22+
const curr = sortedArr[i];
23+
const next = sortedArr[i + 1];
24+
25+
if (next === curr + 1) {
26+
consecutive += 1;
27+
} else {
28+
consecutive = 1;
29+
}
30+
31+
result = Math.max(result, consecutive);
32+
}
33+
34+
return result;
35+
};
36+
37+
/**
38+
* solve 2
39+
*
40+
* 시간 복잡도: O(n)
41+
* 공간 복잡도: O(n)
42+
*
43+
* @param {number[]} nums
44+
* @return {number}
45+
*/
46+
var longestConsecutive = function(nums) {
47+
let longest = 0;
48+
const numSet = new Set(nums);
49+
50+
for (const num of numSet) {
51+
if (numSet.has(num - 1)) continue;
52+
let length = 1;
53+
54+
while (numSet.has(num + length)) length++;
55+
56+
longest = Math.max(length, longest);
57+
}
58+
59+
return longest;
60+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
7+
/*
8+
* 시간 복잡도: O(n log n)
9+
* 공간 복잡도: O(n)
10+
*
11+
* 1. map 구조를 사용해서 몇번 나왔는지 카운트한다.
12+
* 2. map 구조에서 가장 큰 수를 구한다.
13+
*/
14+
var topKFrequent = function(nums, k) {
15+
const map = new Map();
16+
17+
for (let i = 0; i < nums.length; i++) {
18+
if (!map.has(nums[i])) {
19+
map.set(nums[i], 1);
20+
} else {
21+
map.set(nums[i], map.get(nums[i]) + 1);
22+
}
23+
}
24+
25+
const result = [...map.entries()].sort((a, b) => b[1] - a[1]);
26+
27+
return result.slice(0, k).map((val) => val[0]);
28+
};

two-sum/jangwonyoon.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* solve 1
3+
*
4+
* 시간 복잡도: O(n^2)
5+
* 공간 복잡도: O(1)
6+
*
7+
* @param {number[]} nums
8+
* @param {number} target
9+
* @return {number[]}
10+
*/
11+
var twoSum = function(nums, target) {
12+
const length = nums.length - 1;
13+
14+
for (let i = 0; i < length; i++) {
15+
for(let j = length; j > 0; j--) {
16+
const sum = nums[i] + nums[j];
17+
18+
if (i !== j) {
19+
if (sum === target) {
20+
return [i , j];
21+
}
22+
}
23+
}
24+
}
25+
};
26+
27+
28+
/**
29+
* solve 2
30+
*
31+
* 시간 복잡도: O(n)
32+
* 공간 복잡도: O(n)
33+
*
34+
* @param {number[]} nums
35+
* @param {number} target
36+
* @return {number[]}
37+
*/
38+
var twoSum = function(nums, target) {
39+
const map = new Map();
40+
41+
for (let i = 0; i < nums.length; i++) {
42+
const temp = target - nums[i];
43+
44+
if (map.has(temp)) {
45+
return [map.get(temp), i];
46+
}
47+
48+
map.set(nums[i], i);
49+
}
50+
};

0 commit comments

Comments
 (0)