Skip to content

Commit e529f20

Browse files
committed
Added 1 solution & modified 2 solutions
1 parent ece674f commit e529f20

3 files changed

+95
-122
lines changed
Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,22 @@
11
class Solution {
2-
public int[][] intervalIntersection(int[][] A, int[][] B) {
3-
List<int[]> intersections = new ArrayList<>();
4-
int idx1 = 0;
5-
int idx2 = 0;
6-
7-
while (idx1 < A.length && idx2 < B.length) {
8-
if (A[idx1][0] > B[idx2][1]) {
9-
idx2++;
10-
continue;
11-
}
12-
13-
if (A[idx1][1] < B[idx2][0]) {
14-
idx1++;
15-
continue;
16-
}
17-
18-
int maxStart = Math.max(A[idx1][0], B[idx2][0]);
19-
int minEnd = Math.min(A[idx1][1], B[idx2][1]);
20-
21-
int[] interval = {maxStart, minEnd};
22-
intersections.add(interval);
23-
24-
if (A[idx1][1] > B[idx2][1]) {
25-
idx2++;
26-
}
27-
else {
28-
idx1++;
29-
}
30-
}
31-
32-
int[][] ans = new int[intersections.size()][2];
33-
for (int i = 0; i < intersections.size(); i++) {
34-
ans[i] = intersections.get(i);
35-
}
36-
37-
return ans;
2+
public int[][] intervalIntersection(int[][] A, int[][] B) {
3+
List<int[]> list = new ArrayList<>();
4+
int startA = 0;
5+
int startB = 0;
6+
while (startA < A.length && startB < B.length) {
7+
int intervalStart = Math.max(A[startA][0], B[startB][0]);
8+
int intervalEnd = Math.min(A[startA][1], B[startB][1]);
9+
if (intervalStart <= intervalEnd) {
10+
list.add(new int[]{intervalStart, intervalEnd});
11+
}
12+
if (A[startA][1] < B[startB][1]) {
13+
startA++;
14+
}
15+
else {
16+
startB++;
17+
}
3818
}
19+
int[][] ans = new int[list.size()][2];
20+
return list.toArray(ans);
21+
}
3922
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public String minRemoveToMakeValid(String s) {
3+
Stack<Integer> stack = new Stack<>();
4+
char[] chars = s.toCharArray();
5+
for (int i = 0; i < chars.length; i++) {
6+
if (chars[i] == '(') {
7+
stack.push(i);
8+
}
9+
else if (chars[i] == ')') {
10+
if (stack.isEmpty()) {
11+
chars[i] = '-';
12+
}
13+
else {
14+
stack.pop();
15+
}
16+
}
17+
}
18+
while (!stack.isEmpty()) {
19+
chars[stack.pop()] = '-';
20+
}
21+
StringBuilder sb = new StringBuilder();
22+
for (int i = 0; i < chars.length; i++) {
23+
if (chars[i] != '-') {
24+
sb.append(chars[i]);
25+
}
26+
}
27+
return sb.toString();
28+
}
29+
}

Medium/Vertical Order Traversal Of Binary Tree.java

Lines changed: 47 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -8,95 +8,56 @@
88
* }
99
*/
1010
class Solution {
11-
class NewNode {
12-
TreeNode t;
13-
int x;
14-
int y;
15-
int level;
16-
17-
NewNode(TreeNode t, int x, int y, int level) {
18-
this.t = t;
19-
this.x = x;
20-
this.y = y;
21-
this.level = level;
22-
}
11+
public List<List<Integer>> verticalTraversal(TreeNode root) {
12+
if (root == null) {
13+
return new ArrayList<>();
2314
}
24-
25-
int maxLeft;
26-
int maxRight;
27-
Map<Integer, List<NewNode>> map;
28-
29-
public List<List<Integer>> verticalTraversal(TreeNode root) {
30-
maxLeft = 0;
31-
maxRight = 0;
32-
map = new HashMap<>();
33-
34-
helper(root, 0);
35-
36-
List<List<Integer>> list = new ArrayList<>();
37-
38-
while (maxLeft <= maxRight) {
39-
if (map.containsKey(maxLeft)) {
40-
List<NewNode> temp = map.get(maxLeft);
41-
42-
Collections.sort(temp, new Comparator<NewNode>() {
43-
@Override
44-
public int compare(NewNode o1, NewNode o2) {
45-
int c = Integer.valueOf(o1.x).compareTo(Integer.valueOf(o2.x));
46-
if (c == 0) {
47-
c = Integer.valueOf(o2.y).compareTo(Integer.valueOf(o1.y));
48-
}
49-
50-
if (c == 0) {
51-
c = Integer.valueOf(o1.t.val).compareTo(Integer.valueOf(o2.t.val));
52-
}
53-
54-
return c;
55-
}
56-
});
57-
58-
List<Integer> valList = new ArrayList<>();
59-
for (NewNode node : temp) {
60-
valList.add(node.t.val);
61-
}
62-
63-
list.add(valList);
64-
}
65-
66-
maxLeft++;
15+
Map<Integer, List<TreeLevel>> map = new TreeMap<>();
16+
Queue<TreeLevel> queue = new LinkedList<>();
17+
queue.add(new TreeLevel(root, 0, 0));
18+
while (!queue.isEmpty()) {
19+
int size = queue.size();
20+
while (size-- > 0) {
21+
TreeLevel removed = queue.remove();
22+
map.computeIfAbsent(removed.xLevel, k -> new ArrayList<>()).add(removed);
23+
if (removed.node.left != null) {
24+
queue.add(new TreeLevel(removed.node.left, removed.xLevel - 1, removed.yLevel - 1));
6725
}
68-
69-
return list;
70-
}
71-
72-
private void helper(TreeNode root, int level) {
73-
if (root == null) {
74-
return;
26+
if (removed.node.right != null) {
27+
queue.add(new TreeLevel(removed.node.right, removed.xLevel + 1, removed.yLevel - 1));
7528
}
76-
77-
NewNode node = new NewNode(root, 0, 0, level);
78-
Queue<NewNode> queue = new LinkedList<>();
79-
80-
queue.add(node);
81-
82-
while (!queue.isEmpty()) {
83-
int size = queue.size();
84-
85-
while (size-- > 0) {
86-
NewNode temp = queue.remove();
87-
map.computeIfAbsent(temp.level, k -> new ArrayList<>()).add(temp);
88-
89-
maxLeft = Math.min(maxLeft, temp.level - 1);
90-
maxRight = Math.max(maxRight, temp.level + 1);
91-
92-
if (temp.t.left != null) {
93-
queue.add(new NewNode(temp.t.left, temp.x - 1, temp.y - 1, temp.level - 1));
94-
}
95-
96-
if (temp.t.right != null) {
97-
queue.add(new NewNode(temp.t.right, temp.x + 1, temp.y - 1, temp.level + 1));
98-
}
99-
}
29+
}
30+
}
31+
List<List<Integer>> list = new ArrayList<>();
32+
for (Integer key : map.keySet()) {
33+
List<TreeLevel> temp = map.get(key);
34+
Collections.sort(temp, new Comparator<TreeLevel>(){
35+
public int compare(TreeLevel t1, TreeLevel t2) {
36+
int c = t2.yLevel - t1.yLevel;
37+
if (c == 0) {
38+
c = t1.node.val - t2.node.val;
39+
}
40+
return c;
10041
}
42+
});
43+
List<Integer> valTemp = new ArrayList<>();
44+
for (TreeLevel t : temp) {
45+
valTemp.add(t.node.val);
46+
}
47+
list.add(valTemp);
10148
}
49+
return list;
50+
}
51+
}
52+
53+
class TreeLevel {
54+
TreeNode node;
55+
int xLevel;
56+
int yLevel;
57+
58+
public TreeLevel(TreeNode node, int xLevel, int yLevel) {
59+
this.node = node;
60+
this.xLevel = xLevel;
61+
this.yLevel = yLevel;
62+
}
10263
}

0 commit comments

Comments
 (0)