Skip to content

Commit cee440b

Browse files
authored
Merge branch 'neetcode-gh:main' into adityacpp
2 parents 2f6a1a6 + 779349c commit cee440b

8 files changed

+261
-2
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,12 @@ If you would like to have collaborator permissions on the repo to merge your own
260260
<sub>[0129 - Sum Root to Leaf Numbers](https://leetcode.com/problems/sum-root-to-leaf-numbers/)</sub> | <sub><div align='center'>[✔️](c%2F0129-sum-root-to-leaf-numbers.c)</div></sub> | <sub><div align='center'>[✔️](cpp%2F0129-sum-root-to-leaf-numbers.cpp)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0129-sum-root-to-leaf-numbers.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0129-sum-root-to-leaf-numbers.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
261261
<sub>[0337 - House Robber III](https://leetcode.com/problems/house-robber-iii/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0337-house-robber-iii.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0337-house-robber-iii.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
262262
<sub>[0951 - Flip Equivalent Binary Trees](https://leetcode.com/problems/flip-equivalent-binary-trees/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0951-flip-equivalent-binary-trees.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0951-flip-equivalent-binary-trees.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
263-
<sub>[1993 - Operations On Tree](https://leetcode.com/problems/operations-on-tree/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'></div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F1993-operations-on-tree.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
263+
<sub>[1993 - Operations On Tree](https://leetcode.com/problems/operations-on-tree/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F1993-operations-on-tree.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F1993-operations-on-tree.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
264264
<sub>[0894 - All Possible Full Binary Trees](https://leetcode.com/problems/all-possible-full-binary-trees/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0894-all-possible-full-binary-trees.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0894-all-possible-full-binary-trees.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0894-all-possible-full-binary-trees.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
265265
<sub>[0513 - Find Bottom Left Tree Value](https://leetcode.com/problems/find-bottom-left-tree-value/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0513-find-bottom-left-tree-value.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0513-find-bottom-left-tree-value.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
266266
<sub>[0669 - Trim a Binary Search Tree](https://leetcode.com/problems/trim-a-binary-search-tree/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0669-trim-a-binary-search-tree.go)</div></sub> | <sub><div align='center'>[✔️](java%2F0669-trim-a-binary-search-tree.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0669-trim-a-binary-search-tree.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0669-trim-a-binary-search-tree.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0669-trim-a-binary-search-tree.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](typescript%2F0669-trim-a-binary-search-tree.ts)</div></sub>
267267
<sub>[0173 - Binary Search Tree Iterator](https://leetcode.com/problems/binary-search-tree-iterator/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0173-binary-search-tree-iterator.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0173-binary-search-tree-iterator.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0173-binary-search-tree-iterator.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
268-
<sub>[0538 - Convert Bst to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0538-convert-bst-to-greater-tree.cpp)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'></div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0538-convert-bst-to-greater-tree.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
268+
<sub>[0538 - Convert Bst to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0538-convert-bst-to-greater-tree.cpp)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0538-convert-bst-to-greater-tree.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0538-convert-bst-to-greater-tree.kt)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
269269
<sub>[0124 - Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/)</sub> | <sub><div align='center'>[✔️](c%2F0124-binary-tree-maximum-path-sum.c)</div></sub> | <sub><div align='center'>[✔️](cpp%2F0124-binary-tree-maximum-path-sum.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0124-binary-tree-maximum-path-sum.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0124-binary-tree-maximum-path-sum.go)</div></sub> | <sub><div align='center'>[✔️](java%2F0124-binary-tree-maximum-path-sum.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0124-binary-tree-maximum-path-sum.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0124-binary-tree-maximum-path-sum.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0124-binary-tree-maximum-path-sum.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](rust%2F0124-binary-tree-maximum-path-sum.rs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](swift%2F0124-binary-tree-maximum-path-sum.swift)</div></sub> | <sub><div align='center'>[✔️](typescript%2F0124-binary-tree-maximum-path-sum.ts)</div></sub>
270270
<sub>[0297 - Serialize And Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/)</sub> | <sub><div align='center'>[✔️](c%2F0297-serialize-and-deserialize-binary-tree.c)</div></sub> | <sub><div align='center'>[✔️](cpp%2F0297-serialize-and-deserialize-binary-tree.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0297-serialize-and-deserialize-binary-tree.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0297-serialize-and-deserialize-binary-tree.go)</div></sub> | <sub><div align='center'>[✔️](java%2F0297-serialize-and-deserialize-binary-tree.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0297-serialize-and-deserialize-binary-tree.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0297-serialize-and-deserialize-binary-tree.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0297-serialize-and-deserialize-binary-tree.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](swift%2F0297-serialize-and-deserialize-binary-tree.swift)</div></sub> | <sub><div align='center'>[✔️](typescript%2F0297-serialize-and-deserialize-binary-tree.ts)</div></sub>
271271

java/0049-group-anagrams.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
class Solution {
2+
public List<List<String>> groupAnagrams(String[] strs) {
3+
Map<String, List<String>> res = new HashMap<>();
4+
5+
for (String s : strs) {
6+
int[] count = new int[26];
7+
8+
for (char c : s.toCharArray()) {
9+
count[c - 'a']++;
10+
}
11+
12+
StringBuilder sb = new StringBuilder();
13+
for (int i = 0; i < 26; i++) {
14+
sb.append('#');
15+
sb.append(count[i]);
16+
}
17+
String key = sb.toString();
18+
19+
if (!res.containsKey(key)) {
20+
res.put(key, new ArrayList<>());
21+
}
22+
res.get(key).add(s);
23+
}
24+
25+
return new ArrayList<>(res.values());
26+
}
27+
}
28+
-------------------------------------------------------------------------
129
class Solution {
230
public List<List<String>> groupAnagrams(String[] strs) {
331
Map<String, List<String>> map = new HashMap<>();
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Recursive solution
2+
class Solution {
3+
private int curSum = 0;
4+
5+
public TreeNode convertBST(TreeNode root) {
6+
convertBSTRecursive(root);
7+
return root;
8+
}
9+
10+
private void convertBSTRecursive(TreeNode node) {
11+
if (node == null) {
12+
return;
13+
}
14+
15+
convertBSTRecursive(node.right);
16+
int temp = node.val;
17+
node.val += curSum;
18+
curSum += temp;
19+
convertBSTRecursive(node.left);
20+
}
21+
}
22+
23+
// Iterative solution
24+
class Solution {
25+
public TreeNode convertBST(TreeNode root) {
26+
Stack<TreeNode> stack = new Stack<>();
27+
TreeNode cur = root;
28+
29+
int curSum = 0;
30+
while (cur != null || !stack.isEmpty()) {
31+
while (cur != null) {
32+
stack.push(cur);
33+
cur = cur.right;
34+
}
35+
cur = stack.pop();
36+
cur.val += curSum;
37+
curSum = cur.val;
38+
cur = cur.left;
39+
}
40+
41+
return root;
42+
}
43+
}

java/1291-sequential-digits.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public List<Integer> sequentialDigits(int low, int high) {
3+
List<Integer> res = new ArrayList<>();
4+
Queue<Integer> q = new LinkedList<>();
5+
for(int i = 1; i < 10; i++)
6+
q.add(i);
7+
8+
while(!q.isEmpty()){
9+
int n = q.poll();
10+
if(n > high)
11+
continue;
12+
if(n >= low && n <= high)
13+
res.add(n);
14+
int ones = n % 10;
15+
if(ones < 9)
16+
q.add(n * 10 + (ones + 1));
17+
}
18+
return res;
19+
}
20+
}

java/1993-operations-on-tree.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
class Solution {
2+
private final int[] parent;
3+
private final int[] locked;
4+
private final Map<Integer, List<Integer>> child;
5+
6+
public LockingTree(int[] parent) {
7+
this.parent = parent;
8+
locked = new int[parent.length];
9+
child = new HashMap<>();
10+
11+
for (int i = 0; i < parent.length; i++) {
12+
child.putIfAbsent(parent[i], new ArrayList<>());
13+
child.putIfAbsent(i, new ArrayList<>());
14+
child.get(parent[i]).add(i);
15+
}
16+
}
17+
18+
public boolean lock(int num, int user) {
19+
if (locked[num] <= 0) {
20+
locked[num] = user;
21+
return true;
22+
}
23+
24+
return false;
25+
}
26+
27+
public boolean unlock(int num, int user) {
28+
if (locked[num] == user) {
29+
locked[num] = 0;
30+
return true;
31+
}
32+
33+
return false;
34+
}
35+
36+
public boolean upgrade(int num, int user) {
37+
if (!noneAncestorsLocked(num)) {
38+
return false;
39+
}
40+
41+
int lockedCount = checkDescendantsAndLockIfNeeded(num);
42+
43+
if (lockedCount > 0) {
44+
locked[num] = user;
45+
}
46+
47+
return lockedCount > 0;
48+
}
49+
50+
private boolean noneAncestorsLocked(int num) {
51+
while (num != -1) {
52+
if (locked[num] != 0) {
53+
return false;
54+
}
55+
num = parent[num];
56+
}
57+
58+
return true;
59+
}
60+
61+
private int checkDescendantsAndLockIfNeeded(int num) {
62+
int lockedCount = 0;
63+
Deque<Integer> deque = new ArrayDeque<>();
64+
65+
deque.addFirst(num);
66+
while (!deque.isEmpty()) {
67+
int n = deque.pollLast();
68+
if (locked[n] > 0) {
69+
lockedCount++;
70+
locked[n] = 0;
71+
}
72+
for (Integer i : child.get(n)) {
73+
deque.addFirst(i);
74+
}
75+
}
76+
77+
return lockedCount;
78+
}
79+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
fun firstUniqChar(s: String): Int {
3+
var count = IntArray (26)
4+
for (c in s)
5+
count[c - 'a']++
6+
7+
for ((i, c) in s.withIndex()) {
8+
if (count[c - 'a'] == 1)
9+
return i
10+
}
11+
12+
return -1
13+
}
14+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Dp solution
2+
class Solution {
3+
fun maxSumAfterPartitioning(arr: IntArray, k: Int): Int {
4+
val n = arr.size
5+
val dp = IntArray (k)
6+
dp[0] = arr[0]
7+
8+
for (i in 1 until n) {
9+
var curMax = 0
10+
var maxAtI = 0
11+
for (j in i downTo (i - k + 1)) {
12+
if (j < 0) break
13+
14+
curMax = maxOf(curMax, arr[j])
15+
16+
val winLen = i - j + 1
17+
val curSum = curMax * winLen
18+
val subArrSum = if (j > 0) dp[(j - 1) % k] else dp[k - 1]
19+
20+
maxAtI = maxOf(maxAtI, curSum + subArrSum)
21+
}
22+
23+
dp[i % k] = maxAtI
24+
}
25+
26+
return dp[(n - 1) % k]
27+
}
28+
}
29+
30+
// recursion + memoization
31+
class Solution {
32+
fun maxSumAfterPartitioning(arr: IntArray, k: Int): Int {
33+
val n = arr.size
34+
val dp = IntArray (n) { -1 }
35+
36+
fun dfs(i: Int): Int {
37+
if (i == n) return 0
38+
if (dp[i] != -1) return dp[i]
39+
40+
var curMax = 0
41+
var res = 0
42+
for (j in i until minOf(n, i + k)) {
43+
curMax = maxOf(curMax, arr[j])
44+
val winLen = j - i + 1
45+
res = maxOf(
46+
res,
47+
dfs(j + 1) + curMax * winLen
48+
)
49+
}
50+
51+
dp[i] = res
52+
return res
53+
}
54+
55+
return dfs(0)
56+
}
57+
}

kotlin/1291-sequential-digits.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
fun sequentialDigits(low: Int, high: Int): List<Int> {
3+
var q = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
4+
var res = mutableListOf<Int>()
5+
6+
while (q.isNotEmpty()) {
7+
var n = q.removeFirst()
8+
9+
if (n > high) continue
10+
if (n >= low) res.add(n)
11+
12+
val d = n % 10
13+
if (d < 9) q.add(n * 10 + (d + 1))
14+
}
15+
16+
return res
17+
}
18+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy