Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
debdd06
217 / Contains Duplicate / Easy / 5m
Berrnuda Sep 24, 2024
a4859f4
267 / Missing Number / Easy / 1m
Berrnuda Sep 24, 2024
06c78a3
121 / Best Time to Buy and Sell Stock / Easy / 8m
Berrnuda Sep 24, 2024
c637ac0
252 / Meeting Rooms / Easy / 10m
Berrnuda Sep 24, 2024
96ae3b0
15 / 3Sum / Medium / 11m 28s
Berrnuda Sep 24, 2024
dbbb660
๊ธฐ์กด ํŒŒ์ผ๋“ค 1wwek ํด๋”๋กœ ์ด๋™
Berrnuda Oct 1, 2024
f713275
242 / Valid Anagram / Easy / 2m 50s
Berrnuda Oct 1, 2024
a9b8893
238 / Product of Arrays Except Self / Medium / 21m 22s
Berrnuda Oct 1, 2024
b747161
191 / Number of 1 Bits / Easy / 13m 27s
Berrnuda Oct 1, 2024
d6db7b6
100 / Same Tree / Easy / 22m 38s
Berrnuda Oct 1, 2024
c67a3ae
746 / Min Cost Climbing Stairs / Easy / 41m 1s
Berrnuda Oct 1, 2024
c205d71
49 / Group Anagrams / Medium / 13m 48s
Berrnuda Oct 8, 2024
8e8206a
190 / Reverse Bits / Easy / 7m 36s"
Berrnuda Oct 8, 2024
b9c959a
125 / Valid Palindrome / Easy / 4m 11s
Berrnuda Oct 8, 2024
afc4e82
322 / Coin Change / Medium / 10m 52s
Berrnuda Oct 8, 2024
66ee45c
206 / Reverse Linked list / Easy / 12m 25s
Berrnuda Oct 8, 2024
fa3523f
338 / Counting Bits / Easy / 14m 28s
Berrnuda Oct 22, 2024
09c77ea
70 / Climbing Stairs / Easy / 3m 11s
Berrnuda Oct 22, 2024
e27461b
21 / Merge Two Sorted Lists / Easy / 5m 28s
Berrnuda Oct 22, 2024
5722d0e
48 / Rotate Image / Medium / 15m 42s
Berrnuda Oct 22, 2024
d73022e
1046 / Last Stone Weight / Easy / 8m 2s
Berrnuda Oct 22, 2024
9ab7aa2
271 / Encode and Decode Strings / Medium / 28m
Berrnuda Oct 29, 2024
87e1047
198 / House Robber / Medium / 7m 31s
Berrnuda Oct 29, 2024
e1adc95
66 / Plus Onde / Easy / 7m 48s
Berrnuda Oct 29, 2024
5b12b2a
704 / Binary Search / Easy / 3m 58s
Berrnuda Oct 29, 2024
ecd1b74
703 / Kth Largest Element in a Stream / Easy / 41m 16s"
Berrnuda Oct 29, 2024
66869a0
102 / Binary Tree Level Order Traversal / Medium / 13m
Berrnuda Nov 19, 2024
e08f1ea
572 / Subtree of Another Tree / Easy / 08m 59s
Berrnuda Nov 19, 2024
938451c
213 / House Robber II / Medium / 11m 23s
Berrnuda Nov 19, 2024
3419dc1
150 / Evaluate Reverse Polish Notation / Meium / 12m 01s
Berrnuda Nov 19, 2024
2110aff
56 / Merge Intervals / Medium / 12m 58s
Berrnuda Nov 26, 2024
19e1818
235 / Lowest Common Ancestor of a Binary Search Tree / Medium / 14m 45s
Berrnuda Nov 26, 2024
8f87367
139 / Word Break / Medium / 18m 22s
Berrnuda Nov 26, 2024
2d35cff
215 / Kth Largest Element in an Array / Medium / 20m 19s
Berrnuda Nov 26, 2024
4e952e1
์˜คํƒ€์ˆ˜์ •
Berrnuda Dec 3, 2024
f658377
7 / Reverse Interger / Medium / 5m 57s
Berrnuda Dec 3, 2024
6ce0a09
743 / Network Delay Time / Medium / 35m 36s
Berrnuda Dec 3, 2024
9d9ee14
39 / Combination Sum / Medium / 21m 41s
Berrnuda Dec 3, 2024
1510888
2013 / Detect Squares / Medium / 31m 15s
Berrnuda Dec 3, 2024
d69159a
57 / Insert Interval / Medium / 20m 29s
Berrnuda Dec 3, 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
26 changes: 26 additions & 0 deletions berrnuda/10week/139_Word_Break.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* @param {string} s
* @param {string[]} wordDict
* @return {boolean}
*/
var wordBreak = function (s, wordDict) {
const wordSet = new Set(wordDict);
const dp = new Array(s.length + 1).fill(false);

dp[0] = true;

for (let i = 1; i <= s.length; i++) {
for (let word of wordSet) {
if (
i >= word.length &&
dp[i - word.length] &&
s.slice(i - word.length, i) === word
) {
dp[i] = true;
break;
}
}
}

return dp[s.length];
};
15 changes: 15 additions & 0 deletions berrnuda/10week/215_Kth_Largest_Element_in_an_Array.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findKthLargest = function (nums, k) {
const minPriQue = new MinPriorityQueue();
for (let i = 0; i < nums.length; i++) {
minPriQue.enqueue(nums[i]);
if (minPriQue.size() > k) {
minPriQue.dequeue();
}
}
return minPriQue.front().element;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* 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) {
while (root) {
if (p.val < root.val && q.val < root.val) {
root = root.left;
} else if (p.val > root.val && q.val > root.val) {
root = root.right;
} else {
return root;
}
}
return null;
};
24 changes: 24 additions & 0 deletions berrnuda/10week/56_Merge_Intervals.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* @param {number[][]} intervals
* @return {number[][]}
*/
var merge = function (intervals) {
let n = intervals.length;

intervals.sort((a, b) => a[0] - b[0]);

let result = [];
let cur = intervals[0];

for (let i = 1; i < n; i++) {
if (cur[1] >= intervals[i][0]) cur[1] = Math.max(cur[1], intervals[i][1]);
else {
result.push(cur);
cur = intervals[i];
}
}

result.push(cur);

return result;
};
43 changes: 43 additions & 0 deletions berrnuda/11week/2013_Detect_Squares.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
var DetectSquares = function () {
this.ptsCount = new Map();
};

/**
* @param {number[]} point
* @return {void}
*/
DetectSquares.prototype.add = function (point) {
const key = `${point[0]}/${point[1]}`;
this.ptsCount.set(key, (this.ptsCount.get(key) || 0) + 1);
};

/**
* @param {number[]} point
* @return {number}
*/
DetectSquares.prototype.count = function (point) {
const [qx, qy] = point;
let result = 0;

for (const key of this.ptsCount.keys()) {
const [px, py] = key.split("/").map(Number);

if (Math.abs(px - qx) === Math.abs(py - qy) && px !== qx && py !== qy) {
const key1 = `${px}/${qy}`;
const key2 = `${qx}/${py}`;
result +=
(this.ptsCount.get(key) || 0) *
(this.ptsCount.get(key1) || 0) *
(this.ptsCount.get(key2) || 0);
}
}

return result;
};

/**
* Your DetectSquares object will be instantiated and called as such:
* var obj = new DetectSquares()
* obj.add(point)
* var param_2 = obj.count(point)
*/
30 changes: 30 additions & 0 deletions berrnuda/11week/39_Combination_Sum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* @param {number[]} candidates
* @param {number} target
* @return {number[][]}
*/
var combinationSum = function (candidates, target) {
const result = [];
const stack = [[[], 0, 0]];

while (stack.length > 0) {
const [currentCombination, currentSum, startIndex] = stack.pop();

if (currentSum === target) {
result.push(currentCombination);
continue;
}

if (currentSum > target) continue;

for (let i = startIndex; i < candidates.length; i++) {
stack.push([
[...currentCombination, candidates[i]],
currentSum + candidates[i],
i,
]);
}
}

return result;
};
24 changes: 24 additions & 0 deletions berrnuda/11week/57_Insert_Interval.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* @param {number[][]} intervals
* @param {number[]} newInterval
* @return {number[][]}
*/
var insert = function (intervals, newInterval) {
intervals.push(newInterval);
intervals.sort((a, b) => a[0] - b[0]);

let res = [intervals[0]];

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

return res;
};
35 changes: 35 additions & 0 deletions berrnuda/11week/743_Network_Delay_Time.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* @param {number[][]} times
* @param {number} n
* @param {number} k
* @return {number}
*/
var networkDelayTime = function (times, n, k) {
const node = Array.from({ length: n + 1 }, () => []);
for (const [u, v, w] of times) node[u].push([v, w]);

const dist = new Array(n + 1).fill(Infinity);
dist[k] = 0;

const visited = new Array(n + 1).fill(false);

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

if (dist[minNode] === Infinity) break;

visited[minNode] = true;

for (const [neighbor, weight] of node[minNode]) {
const newDist = dist[minNode] + weight;
if (newDist < dist[neighbor]) dist[neighbor] = newDist;
}
}

const maxDist = Math.max(...dist.slice(1));
return maxDist === Infinity ? -1 : maxDist;
};
12 changes: 12 additions & 0 deletions berrnuda/11week/7_Reverse_Integer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
const sign = x < 0;
const rev = parseInt(String(Math.abs(x)).split("").reverse().join(""));

if (rev < -Math.pow(2, 31) || rev > Math.pow(2, 31) - 1) return 0;

return sign ? -rev : rev;
};
19 changes: 19 additions & 0 deletions berrnuda/1week/121_Best_Time_to_Buy_and_Sell_Stock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function (prices) {
const { length } = prices;
let minPrice = Math.max(...prices);
let maxProfit = 0;

for (let i = 0; i < length; i++) {
if (prices[i] < minPrice) {
minPrice = prices[i];
} else {
let profit = prices[i] - minPrice;
maxProfit = profit > maxProfit ? profit : maxProfit;
}
}
return maxProfit;
};
33 changes: 33 additions & 0 deletions berrnuda/1week/15_3Sum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function (nums) {
const { length } = nums;
const result = [];
const sortedNums = nums.sort((a, b) => a - b);

for (let i = 0; i < length - 2; i++) {
if (i != 0 && sortedNums[i] === sortedNums[i - 1]) continue;

for (let j = i + 1, k = length - 1; j < k; ) {
const sum = sortedNums[i] + sortedNums[j] + sortedNums[k];

if (sum === 0) {
result.push([sortedNums[i], sortedNums[j], sortedNums[k]]);

while (j < k && sortedNums[j] === sortedNums[j + 1]) j++;
while (j < k && sortedNums[k] === sortedNums[k - 1]) k--;

j++;
k--;
} else if (sum < 0) {
j++;
} else {
k--;
}
}
}

return result;
};
15 changes: 15 additions & 0 deletions berrnuda/1week/217_Contains_Duplicate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
const { length } = nums;
const num = {};

for (let i = 0; i < length; i++) {
if (num[nums[i]]) return true;
num[nums[i]] = true;
}

return false;
};
28 changes: 28 additions & 0 deletions berrnuda/1week/252_Meeting_Rooms.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Definition of Interval:
* class Interval {
* constructor(start, end) {
* this.start = start;
* this.end = end;
* }
* }
*/

class Solution {
/**
* @param {Interval[]} intervals
* @returns {boolean}
*/
canAttendMeetings(intervals) {
const sortedTimes = intervals.sort((a, b) => a.start - b.start);

let prevEnd = 0;

for (const interval of sortedTimes) {
if (interval.start < prevEnd) return false;
prevEnd = interval.end;
}

return true;
}
}
14 changes: 14 additions & 0 deletions berrnuda/1week/268_Missing_Number.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @param {number[]} nums
* @return {number}
*/
var missingNumber = function (nums) {
const { length } = nums;
const sortedNums = nums.sort((a, b) => a - b);

for (let i = 0; i < length; i++) {
if (sortedNums[i] !== i) return i;
}

return length;
};
26 changes: 26 additions & 0 deletions berrnuda/2week/100_Same_Tree.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} p
* @param {TreeNode} q
* @return {boolean}
*/
var isSameTree = function (p, q) {
if (p === null && q === null) return true;
if (p === null || q === null) return false;

if (p.val !== q.val) return false;

return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
};

// Runtime: 53 ms Beats 54.81%
// Memory: 49.98 MB Beats 5.64%

// 22m 38s
Loading
Loading