Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
744d788
Added solution for Two Sum
viv756 Mar 18, 2025
a9b75e4
"Added solution for Best Time to Buy and Sell Stock"
viv756 Mar 20, 2025
bad8b37
*
viv756 Mar 20, 2025
e30428a
added solution for Contains Duplicate
viv756 Mar 20, 2025
81ef74d
added solution for sum of two integers
viv756 Mar 22, 2025
c6d8917
added solution for Product of Array Except Self
viv756 Mar 22, 2025
32a4d4b
added solution for maxsubArray Sum
viv756 Mar 23, 2025
70802b9
added solution for maximum product of subarray
viv756 Mar 24, 2025
d5908a8
added solution for Find Minimum in Rotated Sorted Array
viv756 Mar 25, 2025
cc6493b
added solution for search in a sorted array
viv756 Mar 27, 2025
d5715a4
added solution for search in rotated sorted array
viv756 Mar 27, 2025
7504db5
added solution for three sum
viv756 Mar 28, 2025
44878e9
added solution for container with most water
viv756 Mar 29, 2025
898e1fc
added solution for number of 1 bits
viv756 Apr 2, 2025
d344147
added solution for counting bits
viv756 Apr 2, 2025
e81b774
added solution for missing num
viv756 Apr 2, 2025
d6db189
added solution for reverse bits
viv756 Apr 5, 2025
c0d8afd
added solution for climping stairs
viv756 Apr 5, 2025
a301b67
added solution for coin change
viv756 Apr 6, 2025
ec4a4a9
added solution for longest increasing subsequense
viv756 Apr 6, 2025
5c1f7c0
added solution for longest common subsequence
viv756 Apr 9, 2025
808b4d8
added soluton for word break
viv756 Apr 11, 2025
2afd93c
added solution for combination sum
viv756 Apr 12, 2025
3a54a30
added solution for house robber
viv756 Apr 12, 2025
56c67c0
added solution for house robber 2
viv756 Apr 15, 2025
4b0bd94
added solution for decode ways
viv756 Apr 15, 2025
9178388
added solution for unique paths
viv756 Apr 16, 2025
fbeceab
added solution for jump game
viv756 Apr 16, 2025
f5329ce
added solution for clone graph
viv756 Apr 18, 2025
6ee4453
added solution for course schedule
viv756 Apr 24, 2025
930c909
added solution for pacific atlantic water flow
viv756 Apr 24, 2025
d6e68bc
added solution for number of islands
viv756 Apr 25, 2025
6fb364d
added solution for longest consecutive sequence
viv756 Apr 25, 2025
8877cb2
added solution for Find Building Where Alice and Bob Can Meet
viv756 Apr 26, 2025
a825c1b
added solution for maximum sum star of a graph
viv756 Apr 26, 2025
b913998
added solution for unreachable pairs
viv756 Apr 26, 2025
6180fec
added solution for insert interval
viv756 Apr 26, 2025
3d4d458
added solution for merge interval
viv756 Apr 29, 2025
bde0caf
added solution for erase overlap intervals
viv756 Apr 29, 2025
0ad0085
added solution for can attend meetings
viv756 Apr 29, 2025
8fc0279
added solution for meeting room 2
viv756 May 1, 2025
9e241df
added solution for reverse linked list
viv756 May 1, 2025
d01532a
added solution for cyclles in linked list
viv756 May 1, 2025
fd3af61
added solution for merge two linked list
viv756 May 1, 2025
de6cf69
added solution for mergeksorted lists
viv756 May 2, 2025
fb917e7
added solution for remove nth node from the end of list
viv756 May 3, 2025
c6570e8
added solution for reorderlist
viv756 May 3, 2025
da60e34
added solution for set matrix zeros
viv756 May 3, 2025
edbd8ac
added solution for spiral order
viv756 May 6, 2025
14a4bf4
added solution for rotate image
viv756 May 6, 2025
fcf5daa
added solution for word search
viv756 May 6, 2025
a32e89e
added solution for longest substring without repeating characters
viv756 May 6, 2025
bb4c004
added solution for longest repeating charcter replacement
viv756 May 7, 2025
a959c49
add solution for minimum window substring
viv756 May 15, 2025
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
16 changes: 16 additions & 0 deletions Best Time to Buy and Sell Stock/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var maxProfit = function (prices) {
let buyPrice = prices[0];
let profit = 0;

for (let i = 0; i < prices.length; i++) {
if (buyPrice > prices[i]) {
buyPrice = prices[i];
}
profit = Math.max(profit, prices[i] - buyPrice);
}

return profit;
};

console.log(maxProfit([7, 1, 5, 3, 6, 4]));

11 changes: 11 additions & 0 deletions Can attend meetings/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function canAttendMeetings(intervals) {
intervals.sort((a, b) => a.start - b.start);

for (let i = 1; i < intervals.length; i++) {
if (intervals[i][0] < intervals[i - 1][1]) {
return false;
}
}

return true;
}
14 changes: 14 additions & 0 deletions Climbing stairs/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
var climbStairs = function (n) {
if (n <= 2) return n;

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

dp[1] = 1;
dp[2] = 2;

for (let i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}

return dp[n];
};
19 changes: 19 additions & 0 deletions Clone Graph/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
var cloneGraph = function(node) {
if (!node) return null;
const visited = new Map();

const dfs = (node) => {
if (visited.has(node)) return visited.get(node);

const clone = new Node(node.val);
visited.set(node, clone);

for (let neighbor of node.neighbors) {
clone.neighbors.push(dfs(neighbor));
}

return clone;
};

return dfs(node);
};
14 changes: 14 additions & 0 deletions Coin change/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
var coinChange = function(coins, amount) {
let minCoins = new Array(amount + 1).fill(amount + 1);
minCoins[0] = 0;

for (let i = 1; i <= amount; i++) {
for (let j = 0; j < coins.length; j++) {
if (i - coins[j] >= 0) {
minCoins[i] = Math.min(minCoins[i], 1 + minCoins[i - coins[j]]);
}
}
}

return minCoins[amount] !== amount + 1 ? minCoins[amount] : -1;
};
14 changes: 14 additions & 0 deletions Combination sum/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
var combinationSum4 = function(nums, target) {
const dp = Array(target + 1).fill(0);
dp[0] = 1;

for (let i = 1; i <= target; i++) {
for (const num of nums) {
if (i - num >= 0) {
dp[i] += dp[i - num];
}
}
}

return dp[target];
};
17 changes: 17 additions & 0 deletions Container with most water/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
var maxArea = function(height) {
let maxArea = 0;
let left = 0;
let right = height.length - 1;

while (left < right) {
maxArea = Math.max(maxArea, (right - left) * Math.min(height[left], height[right]));

if (height[left] < height[right]) {
left++;
} else {
right--;
}
}

return maxArea;
};
13 changes: 13 additions & 0 deletions Contains Duplicate/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function containsDuplicate(nums) {
const hashMap = {};
for (let i = 0; i < nums.length; i++) {
if (hashMap[nums[i]]) {
return true;
}
hashMap[nums[i]] = nums[i];
}

return false;
}

console.log(containsDuplicate([1, 2, 3, 1]));
91 changes: 91 additions & 0 deletions Count unreachable pairs/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
var countPairs = function(n, edges) {
const graph = Array.from({ length: n }, () => []);

// Build adjacency list
for (const [a, b] of edges) {
graph[a].push(b);
graph[b].push(a);
}

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

// DFS to count size of each connected component
const dfs = (node) => {
visited[node] = true;
let size = 1;
for (const neighbor of graph[node]) {
if (!visited[neighbor]) {
size += dfs(neighbor);
}
}
return size;
};

let totalPairs = 0;
let totalNodes = n;

for (let i = 0; i < n; i++) {
if (!visited[i]) {
const componentSize = dfs(i);
totalPairs += componentSize * (totalNodes - componentSize);
totalNodes -= componentSize;
}
}

return totalPairs;
};


// using unin find

var countPairs = function(n, edges) {
// Step 1: Create Union Find
const parent = Array.from({ length: n }, (_, i) => i);
const size = Array(n).fill(1); // Size of each component

const find = (x) => {
if (parent[x] !== x) {
parent[x] = find(parent[x]); // Path compression
}
return parent[x];
};

const union = (x, y) => {
const rootX = find(x);
const rootY = find(y);

if (rootX === rootY) return; // Already connected

// Union by size
if (size[rootX] < size[rootY]) {
parent[rootX] = rootY;
size[rootY] += size[rootX];
} else {
parent[rootY] = rootX;
size[rootX] += size[rootY];
}
};

// Step 2: Connect nodes
for (const [a, b] of edges) {
union(a, b);
}

// Step 3: Count sizes of each connected component
const count = new Map();
for (let i = 0; i < n; i++) {
const root = find(i);
count.set(root, (count.get(root) || 0) + 1);
}

// Step 4: Calculate unreachable pairs
let totalNodes = n;
let result = 0;

for (const sz of count.values()) {
result += sz * (totalNodes - sz);
totalNodes -= sz;
}

return result;
};
7 changes: 7 additions & 0 deletions Counting bits/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var countBits = function(n) {
let res = new Array(n + 1).fill(0);
for (let i = 1; i <= n; i++) {
res[i] = res[i >> 1] + (i & 1);
}
return res;
};
32 changes: 32 additions & 0 deletions Course schedule.js/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
function canFinish(numCourses, prerequisites) {
const graph = new Map();
const inDegree = new Array(numCourses).fill(0);

// Build graph and in-degree array
for (const [course, prereq] of prerequisites) {
if (!graph.has(prereq)) graph.set(prereq, []);
graph.get(prereq).push(course);
inDegree[course]++;
}

// Queue for courses with no prerequisites
const queue = [];
for (let i = 0; i < numCourses; i++) {
if (inDegree[i] === 0) queue.push(i);
}

let finishedCourses = 0;

while (queue.length > 0) {
const current = queue.shift();
finishedCourses++;

const neighbors = graph.get(current) || [];
for (const neighbor of neighbors) {
inDegree[neighbor]--;
if (inDegree[neighbor] === 0) queue.push(neighbor);
}
}

return finishedCourses === numCourses;
}
23 changes: 23 additions & 0 deletions Decode ways/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var numDecodings = function(s) {
if (s[0] === '0') {
return 0;
}

const n = s.length;
const dp = new Array(n + 1).fill(0);
dp[0] = dp[1] = 1;

for (let i = 2; i <= n; i++) {
const one = parseInt(s[i - 1]);
const two = parseInt(s.substring(i - 2, i));

if (1 <= one && one <= 9) {
dp[i] += dp[i - 1];
}
if (10 <= two && two <= 26) {
dp[i] += dp[i - 2];
}
}

return dp[n];
};
16 changes: 16 additions & 0 deletions EraseOverLapIntervals/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

var eraseOverlapIntervals = function(intervals) {
let res = 0;
intervals.sort((a, b) => a[1] - b[1]);
let prev_end = intervals[0][1];

for (let i = 1; i < intervals.length; i++) {
if (prev_end > intervals[i][0]) {
res++;
} else {
prev_end = intervals[i][1];
}
}

return res;
};
16 changes: 16 additions & 0 deletions Find Minimum in Rotated sorted array/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var findMin = function (nums) {
let left = 0;
let right = nums.length - 1;

while (left < right) {
const mid = Math.floor((left + right) / 2);

if (nums[mid] <= nums[right]) {
right = mid;
} else {
left = mid + 1;
}
}

return nums[left];
};
58 changes: 58 additions & 0 deletions Find building alice and bob/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
var leftmostBuildingQueries = function(heights, queries) {
const n = heights.length;
const st = Array.from({ length: n }, () => Array(20).fill(0));
const Log = Array(n + 1).fill(0);
Log[0] = -1;

for (let i = 1; i <= n; i++) {
Log[i] = Log[i >> 1] + 1;
}

for (let i = 0; i < n; i++) {
st[i][0] = heights[i];
}

for (let i = 1; i < 20; i++) {
for (let j = 0; j + (1 << i) <= n; j++) {
st[j][i] = Math.max(st[j][i - 1], st[j + (1 << (i - 1))][i - 1]);
}
}

const res = [];

for (let i = 0; i < queries.length; i++) {
let [l, r] = queries[i];
if (l > r) {
[l, r] = [r, l];
}

if (l === r) {
res.push(l);
continue;
}

if (heights[r] > heights[l]) {
res.push(r);
continue;
}

const maxHeight = Math.max(heights[l], heights[r]);
let left = r + 1, right = n, mid;

while (left < right) {
mid = Math.floor((left + right) / 2);
const k = Log[mid - r + 1];
const maxInRange = Math.max(st[r][k], st[mid - (1 << k) + 1][k]);

if (maxInRange > maxHeight) {
right = mid;
} else {
left = mid + 1;
}
}

res.push(left === n ? -1 : left);
}

return res;
};
Loading