Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
17a6538
242 / Valid Anagram / Easy / 7m30s
JooKangsan Oct 1, 2024
8c2be39
191 / Number_of_1_Bits / Easy / 5m
JooKangsan Oct 1, 2024
bca1313
100 / Same Tree / Easy / 12m20s
JooKangsan Oct 1, 2024
61b1089
746 / Min Cost Climbing Stairs / Easy / 26m
JooKangsan Oct 1, 2024
5c13dbb
238 / Product of Array Except Self / Easy / 25m
JooKangsan Oct 1, 2024
4a79228
git pull master
JooKangsan Oct 8, 2024
a466fab
49 / Gropu Anagrams / Medium / 37m
JooKangsan Oct 8, 2024
eb3ee6f
190 / Reverse Bits / Easy / 12m
JooKangsan Oct 8, 2024
1161b4a
125 / Valid Palindrome / Easy / 10m
JooKangsan Oct 8, 2024
2c1e62a
206 / Reverse Linked List / Easy / 40m
JooKangsan Oct 8, 2024
aaaa854
322 / Coin Change / Medium / 60m
JooKangsan Oct 8, 2024
99653f9
marge master
JooKangsan Oct 15, 2024
fd2a34e
104/ Maximum Depth of Binary Tree / Easy / 7m20s
JooKangsan Oct 15, 2024
f3d76c6
1 / Two Sum / Easy / 12m
JooKangsan Oct 15, 2024
60e0c66
202 / Happy Number / Easy / 30m
JooKangsan Oct 15, 2024
9966ff6
20 / Valid Parentheses / Easy / 12m/40s
JooKangsan Oct 15, 2024
cfd419e
141 / Linked List Cycle / Easy / X
JooKangsan Oct 15, 2024
234dd69
fix : 파일 위치실수로 이동
JooKangsan Oct 15, 2024
acd87ea
338 / Counting Bits / Easy / 12m10s
JooKangsan Oct 22, 2024
50081de
70 / Climbing Stairs / Easy / 5m30
JooKangsan Oct 22, 2024
d82f3c8
21 / Merge Two Sorted Lists / Easy / 4m40s
JooKangsan Oct 22, 2024
4c9cfdd
48 / Rotate Image / Easy / 7m40s
JooKangsan Oct 22, 2024
a38a9cc
1046 / Last Stone Weight / Easy / 3m10s
JooKangsan Oct 22, 2024
5f427a1
271 / Encode and Decode String / Easy / 8m10s
JooKangsan Oct 29, 2024
f0d2ea7
198 / House Robber / medium / 4m30s
JooKangsan Oct 29, 2024
c9a380c
66 / Plus One / easy / 2m20s
JooKangsan Oct 29, 2024
90b5ae7
704 / Binary Search / 4m50s
JooKangsan Oct 29, 2024
f8fc1f7
703 / Kth Largest Element in a Stream / easy / 47m
JooKangsan Oct 29, 2024
7cc6871
fix: 주차별로 분류
JooKangsan Nov 12, 2024
2e07e79
128 / Longest Consecutive Sequence / medium / 26m40s
JooKangsan Nov 12, 2024
6d005a1
371 / Sum of Two Integer / medium / 15m
JooKangsan Nov 12, 2024
4bbefe7
226 / Invert Binary Tree / easy / 12m30s
JooKangsan Nov 12, 2024
9295af1
543 / Diameter of Binary Tree / easy / 14m40s
JooKangsan Nov 12, 2024
913fc63
128 코드 수정
JooKangsan Nov 12, 2024
3a1fae2
136 / Single Number / easy / 3m30s
JooKangsan Nov 13, 2024
c3e1b0f
110 / Balanced Binary Tree / eay / 12m40s
JooKangsan Nov 13, 2024
a85cc91
54 / Spiral Matrix / medium / 20m30s
JooKangsan Nov 13, 2024
d4d95fb
973 / K Closest Points to Origin / medium / 8m20s
JooKangsan Nov 13, 2024
5fb80f2
155 / Min Stack / medium / 14m10s
JooKangsan Nov 13, 2024
2f6feb9
208 / Implement Trie (Prefix Tree) / medium
JooKangsan Nov 13, 2024
54bd9de
150 / Evaluate Reverse Polish Notation / medium / 17m40s
JooKangsan Nov 25, 2024
cf16334
203 / House Robber II / medium / 21m40s
JooKangsan Nov 25, 2024
94b14d9
102 / House Robber II / medium / 14m20s
JooKangsan Nov 25, 2024
2caae01
572 / Subtree of Another Tree / medium / 24m
JooKangsan Nov 25, 2024
5414c8b
56 / Merge Intervals / medium / 12m10s
JooKangsan Nov 27, 2024
19a1b8e
139 / Word Break / medium / 27m50s
JooKangsan Nov 27, 2024
bce27be
251 / Kth Largest Element in an Array / medium / 42m50s
JooKangsan Nov 27, 2024
6e897a5
235 / Lowest Common Ancestor of a Binary Search Tree / medium / 32m20s
JooKangsan Nov 27, 2024
13d1400
1584 / Min Cost to Connect / medium
JooKangsan Nov 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions JooKangsan/10주차/139_Word_Break.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@


/**
* @param {string} s
* @param {string[]} wordDict
* @return {boolean}
*/
var wordBreak = function(s, wordDict) {
const memo = new Map();

function dp(str, i = 0) {
if (str.length === 0) return true;
if (i >= wordDict.length) return false;

const key = str + ',' + i;
if (memo.has(key)) return memo.get(key);

let word = wordDict[i];
if (str.slice(0, word.length) === word) {
if (dp(str.slice(word.length), 0)) {
memo.set(key, true);
return true;
}
}

const result = dp(str, i + 1);
memo.set(key, result);
return result;
}

return dp(s);
};
34 changes: 34 additions & 0 deletions JooKangsan/10주차/1584_Min_Cost_to_Connect_All_Points.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/**
* @param {number[][]} points
* @return {number}
*/
var minCostConnectPoints = function (points) {
const n = points.length;
const visited = new Array(n).fill(false);
const minDist = new Array(n).fill(Infinity);
minDist[0] = 0;
let result = 0;

for (let i = 0; i < n; i++) {
let x = -1;
for (let j = 0; j < n; j++) {
if (!visited[j] && (x === -1 || minDist[j] < minDist[x])) {
x = j;
}
}

visited[x] = true;
result += minDist[x];

for (let k = 0; k < n; k++) {
if (!visited[k]) {
const dist =
Math.abs(points[x][0] - points[k][0]) +
Math.abs(points[x][1] - points[k][1]);
minDist[k] = Math.min(minDist[k], dist);
}
}
}

return result;
};
29 changes: 29 additions & 0 deletions JooKangsan/10주차/215_Kth_Largest_Element_in_an_Array.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function(nums, k) {
let [min, max] = nums.reduce(([min, max], num) =>
[Math.min(min, num), Math.max(max, num)],
[Infinity, -Infinity]
);

const offset = min >= 0 ? 0 : -min;
const count = new Array(max + 1 + offset).fill(0);

for(let num of nums) {
count[num + offset]++;
}

let kthLargest;
for(let i = count.length - 1; i >= 0; i--) {
k -= count[i];
if(k <= 0) {
kthLargest = i - offset;
break;
}
}

return kthLargest;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/

/**
* @param {TreeNode} root
* @param {TreeNode} p
* @param {TreeNode} q
* @return {TreeNode}
*/

var lowestCommonAncestor = function(root, p, q) {
let min = Math.min(p.val, q.val)
let max = Math.max(p.val, q.val)

if(min > root.val) {
return lowestCommonAncestor(root.right, p, q)
} else if(max < root.val) {
return lowestCommonAncestor(root.left, p, q)
} else {
return root
}
};
18 changes: 18 additions & 0 deletions JooKangsan/10주차/56_Merge_Intervals.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function (intervals) {
intervals.sort((a, b) => a[0] - b[0]);

for (let i = 1; i < intervals.length; i++) {
if (intervals[i][0] <= intervals[i - 1][1]) {
intervals[i][1] = Math.max(intervals[i][1], intervals[i - 1][1]);
intervals[i][0] = intervals[i - 1][0];
intervals.splice(i - 1, 1);
i--;
}
}

return intervals;
};
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
15 changes: 15 additions & 0 deletions JooKangsan/5주차/1046_Last_Stone_Weight.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* @param {number[]} stones
* @return {number}
*/
var lastStoneWeight = function (stones) {
while (stones.length > 1) {
stones.sort((a, b) => b - a);
const first = stones.shift();
const second = stones.shift();
if (first !== second) {
stones.push(first - second);
}
}
return stones.length === 0 ? 0 : stones[0];
};
23 changes: 23 additions & 0 deletions JooKangsan/5주차/21_Merge_Two_Sorted_Lists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function (list1, list2) {
if (list1 == null) return list2;
if (list2 == null) return list1;
if (list1.val <= list2.val) {
list1.next = mergeTwoLists(list1.next, list2);
return list1;
} else {
list2.next = mergeTwoLists(list1, list2.next);
return list2;
}
};
13 changes: 13 additions & 0 deletions JooKangsan/5주차/338_Counting_Bits.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* @param {number} n
* @return {number[]}
*/
var countBits = function (n) {
const ans = new Array(n + 1).fill(0);

for (let i = 1; i <= n; i++) {
ans[i] = ans[Math.floor(i / 2)] + (i % 2);
}

return ans;
};
14 changes: 14 additions & 0 deletions JooKangsan/5주차/48_Rotate_Image.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var rotate = function (matrix) {
for (let i = 0; i < matrix.length; i++) {
for (let j = i + 1; j < matrix.length; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
}
}
for (let i = 0; i < matrix.length; i++) {
matrix[i].reverse();
}
};
14 changes: 14 additions & 0 deletions JooKangsan/5주차/70_Climbing_Stairs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function (n) {
if (n <= 2) return n;
const step = new Array(n + 1).fill(0);
step[1] = 1;
step[2] = 2;
for (let i = 3; i <= n; i++) {
step[i] = step[i - 1] + step[i - 2];
}
return step[n];
};
63 changes: 63 additions & 0 deletions JooKangsan/6주차/ 703_Kth_Largest_Element_in_a_Stream.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/**
* @param {number} k
* @param {number[]} nums
*/
var KthLargest = function(k, nums) {
this.k = k;
this.h = [];

// populate the array
const limit = Math.min(this.k, nums.length);
for(let i = 0; i < limit; i++) {
this.h.push(nums[i]);
}
this.heapifyBottomUp();
// add remaining elements
for(let i = k; i < nums.length; i++) {
this.add(nums[i]);
}
};

KthLargest.prototype.heapifyBottomUp = function() {
const firstLeafAt = Math.floor(this.h.length/2);
for(let i = firstLeafAt - 1; i >= 0; i--) {
this.heapify(i);
}
}

KthLargest.prototype.heapify = function(i) {
const l = 2*i + 1;
const r = 2*i + 2;

let min = i;

if(l < this.h.length && this.h[l] < this.h[min]) {
min = l
}

if(r < this.h.length && this.h[r] < this.h[min]) {
min = r;
}

if(min != i) {
[this.h[i], this.h[min]] = [this.h[min], this.h[i]];
this.heapify(min)
}
};

/**
* @param {number} val
* @return {number}
*/
KthLargest.prototype.add = function(val) {
if(this.h.length < this.k) { // heap is not full
this.h.push(val);
this.heapifyBottomUp();
} else {
if(val > this.h[0]) {
this.h[0] = val;
this.heapify(0)
}
}
return this.h[0];
};
18 changes: 18 additions & 0 deletions JooKangsan/6주차/198_House_Robber.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function (nums) {
let n = nums.length;
if (n === 0) return 0;
if (n === 1) return nums[0];

let dp = new Array(n + 1).fill(0);
dp[1] = nums[0];

for (let i = 2; i <= n; i++) {
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
}

return dp[n];
};
27 changes: 27 additions & 0 deletions JooKangsan/6주차/271_Encode_and_Decode_Strings.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Solution {
/**
* @param {string[]} strs
* @returns {string}
*/
encode(strs) {
return strs.map((s) => `${s.length}#${s}`).join("");
}

/**
* @param {string} str
* @returns {string[]}
*/
decode(str) {
let i = 0;
const result = [];

while (i < str.length) {
let j = str.indexOf("#", i);
let length = parseInt(str.slice(i, j), 10);
result.push(str.slice(j + 1, j + 1 + length));
i = j + 1 + length;
}

return result;
}
}
8 changes: 8 additions & 0 deletions JooKangsan/6주차/66_Plus_One.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function (digits) {
const join = BigInt(digits.join("")) + 1n;
return join.toString().split("").map(Number);
};
22 changes: 22 additions & 0 deletions JooKangsan/6주차/704_Binary_Search.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
const center = Math.floor((left + right) / 2);

if (nums[center] === target) {
return center;
} else if (nums[center] < target) {
left = center + 1;
} else {
right = center - 1;
}
}

return -1;
}
Loading
Loading