Skip to content

Commit 96abc5a

Browse files
committed
Added 1 solution & modified 1 solution
1 parent cbb1b6d commit 96abc5a

File tree

2 files changed

+59
-10
lines changed

2 files changed

+59
-10
lines changed

Easy/Pascal's Triangle II.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
class Solution {
2-
public List<Integer> getRow(int rowIndex) {
3-
List<Integer> res = new ArrayList<Integer>();
4-
5-
for(int i = 0;i<rowIndex+1;i++) {
6-
res.add(1);
7-
for(int j=i-1;j>0;j--) {
8-
res.set(j, res.get(j-1) + res.get(j));
9-
}
2+
public List<Integer> getRow(int rowIndex) {
3+
int count = 0;
4+
List<Integer> list = new ArrayList<>();
5+
List<Integer> prev = new ArrayList<>();
6+
for (int i = 0; i <= rowIndex; i++) {
7+
prev = list;
8+
List<Integer> temp = new ArrayList<>();
9+
for (int j = 0; j <= i; j++) {
10+
if (j == 0 || j == i) {
11+
temp.add(1);
1012
}
11-
12-
return res;
13+
else {
14+
temp.add(prev.get(j - 1) + prev.get(j));
15+
}
16+
}
17+
list = temp;
1318
}
19+
return list;
20+
}
1421
}

Medium/Restore IP Address.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public List<String> restoreIpAddresses(String s) {
3+
int n = s.length();
4+
LinkedList<String> segments = new LinkedList<String>();
5+
List<String> output = new ArrayList<String>();
6+
backtrack(s, -1, 3, output, segments, n);
7+
return output;
8+
}
9+
10+
private void backtrack(String s, int prevPos, int dots, List<String> output, LinkedList<String> segments, int n) {
11+
int maxPos = Math.min(n - 1, prevPos + 4);
12+
for (int i = prevPos + 1; i < maxPos; i++) {
13+
String segment = s.substring(prevPos + 1, i + 1);
14+
if (isValid(segment)) {
15+
segments.add(segment);
16+
if (dots - 1 == 0) {
17+
updateOutput(s, i, n, segments, output);
18+
}
19+
else {
20+
backtrack(s, i, dots - 1, output, segments, n);
21+
}
22+
segments.removeLast();
23+
}
24+
}
25+
}
26+
27+
public void updateOutput(String s, int currPos, int n, LinkedList<String> segments, List<String> output) {
28+
String segment = s.substring(currPos + 1, n);
29+
if (isValid(segment)) {
30+
segments.add(segment);
31+
output.add(String.join(".", segments));
32+
segments.removeLast();
33+
}
34+
}
35+
36+
public boolean isValid(String segment) {
37+
int m = segment.length();
38+
if (m > 3)
39+
return false;
40+
return (segment.charAt(0) != '0') ? (Integer.parseInt(segment) <= 255) : (m == 1);
41+
}
42+
}

0 commit comments

Comments
 (0)