Skip to content

Commit c6b188c

Browse files
committed
Added 1 solution
1 parent ea99e35 commit c6b188c

File tree

4 files changed

+67
-133
lines changed

4 files changed

+67
-133
lines changed

Easy/Find the Town Judge.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int findJudge(int N, int[][] trust) {
3+
int[] count = new int[N + 1];
4+
5+
for (int[] item : trust) {
6+
count[item[0]]--;
7+
count[item[1]]++;
8+
}
9+
10+
for (int i = 1; i <= N; i++) {
11+
if (count[i] == N - 1) {
12+
return i;
13+
}
14+
}
15+
16+
return -1;
17+
}
18+
}

Easy/Nested List Weight Sum.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,20 @@
2727
* }
2828
*/
2929
class Solution {
30-
int sum = 0;
31-
30+
int sum;
3231
public int depthSum(List<NestedInteger> nestedList) {
33-
for (NestedInteger n : nestedList) {
34-
dfsHelper(n, 1);
35-
}
36-
32+
sum = 0;
33+
helper(nestedList, 1);
3734
return sum;
3835
}
3936

40-
private void dfsHelper(NestedInteger n, int depth) {
41-
if (n.isInteger()) {
42-
sum += n.getInteger() * depth;
43-
}
44-
else {
45-
for (NestedInteger i : n.getList()) {
46-
dfsHelper(i, depth+1);
37+
private void helper(List<NestedInteger> nestedList, int level) {
38+
for (NestedInteger nested : nestedList) {
39+
if (nested.isInteger()) {
40+
sum += nested.getInteger() * level;
41+
}
42+
else {
43+
helper(nested.getList(), level + 1);
4744
}
4845
}
4946
}

Medium/Missing Ranges.java

Lines changed: 20 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,31 @@
11
class Solution {
2-
public static List<String> findMissingRanges(int[] nums, int lower, int upper) {
2+
public List<String> findMissingRanges(int[] nums, int lower, int upper) {
33
List<String> list = new ArrayList<>();
4-
5-
if (nums.length == 0) {
6-
list.add(getString(lower, upper));
7-
return list;
8-
}
9-
10-
List<String> range = getRange(nums);
11-
int i = 0;
12-
13-
while (lower <= upper && i < range.size()) {
14-
String s = range.get(i);
15-
if (s.indexOf('>') != -1) {
16-
int start = Integer.parseInt(s.split("->")[0]);
17-
int end = Integer.parseInt(s.split("->")[1]);
18-
19-
if (lower != start) {
20-
list.add(getString(lower, start-1));
21-
}
22-
23-
lower = end + 1;
24-
}
25-
else {
26-
int num = Integer.parseInt(s);
27-
if (lower != num) {
28-
list.add(getString(lower, num-1));
29-
}
30-
31-
lower = num + 1;
32-
}
33-
34-
i++;
35-
}
36-
37-
String s = range.get(range.size()-1);
38-
if (s.indexOf('>') != -1) {
39-
int start = Integer.parseInt(s.split("->")[0]);
40-
int end = Integer.parseInt(s.split("->")[1]);
41-
42-
if (end != upper) {
43-
list.add(getString(end+1, upper));
44-
}
45-
}
46-
else {
47-
int num = Integer.parseInt(s);
48-
if (upper != num) {
49-
list.add(getString(num+1, upper));
50-
}
51-
}
52-
53-
return list;
54-
}
55-
56-
private static List<String> getRange(int[] num) {
57-
58-
List<String> list = new ArrayList<>();
59-
if (num.length == 0) {
60-
return list;
61-
}
62-
63-
int i = 1;
64-
StringBuilder sb = new StringBuilder();
65-
sb.append(num[0]);
66-
int count = 1;
67-
68-
while (i<num.length) {
69-
if (num[i] - num[i-1] == 1 || num[i] - num[i-1] == 0) {
70-
count++;
4+
long next = lower;
5+
6+
for (int i = 0; i < nums.length; i++) {
7+
if (nums[i] < next) {
8+
continue;
719
}
72-
else {
73-
if (count > 1) {
74-
sb.append("->").append(num[i-1]);
75-
list.add(sb.toString());
76-
}
77-
else {
78-
list.add(sb.toString());
79-
}
80-
81-
sb = new StringBuilder();
82-
sb.append(num[i]);
83-
count = 1;
10+
11+
if (nums[i] == next) {
12+
next++;
13+
continue;
8414
}
85-
86-
i++;
15+
16+
list.add(getRange(next, ((long) nums[i]) - 1));
17+
18+
next = ((long) nums[i]) + 1;
8719
}
8820

89-
if (count > 1) {
90-
sb.append("->").append(num[num.length-1]);
21+
if (next <= upper) {
22+
list.add(getRange(next, (long) upper));
9123
}
92-
93-
list.add(sb.toString());
94-
24+
9525
return list;
9626
}
97-
98-
private static String getString(int start, int end) {
99-
StringBuilder sb = new StringBuilder();
100-
if (start == end) {
101-
sb.append(start);
102-
}
103-
else {
104-
sb.append(start).append("->").append(end);
105-
}
106-
107-
return sb.toString();
27+
28+
private String getRange(long down, long up) {
29+
return up == down ? String.valueOf(up) : String.format("%d->%d", down, up);
10830
}
10931
}

Medium/Nested List Weight Sum II.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,38 +27,35 @@
2727
* }
2828
*/
2929
class Solution {
30-
int maxDepth = 1;
31-
int sum = 0;
30+
int maxDepth;
31+
int sum;
3232
public int depthSumInverse(List<NestedInteger> nestedList) {
33-
for (NestedInteger n : nestedList) {
34-
updateMaxDepth(n, 1);
35-
}
33+
maxDepth = 0;
34+
maxDepthHelper(nestedList, 1);
3635

37-
for (NestedInteger n : nestedList) {
38-
dfsHelper(n, maxDepth);
39-
}
36+
sum = 0;
37+
helper(nestedList, maxDepth);
4038

4139
return sum;
4240
}
4341

44-
private void dfsHelper(NestedInteger n, int depth) {
45-
if (n.isInteger()) {
46-
sum += n.getInteger() * depth;
47-
}
48-
else {
49-
for (NestedInteger i : n.getList()) {
50-
dfsHelper(i, depth-1);
42+
private void helper(List<NestedInteger> nestedList, int level) {
43+
for (NestedInteger nested : nestedList) {
44+
if (nested.isInteger()) {
45+
sum += nested.getInteger() * level;
46+
}
47+
else {
48+
helper(nested.getList(), level - 1);
5149
}
5250
}
5351
}
5452

55-
private void updateMaxDepth(NestedInteger n, int depth) {
56-
if (n.isInteger()) {
57-
maxDepth = Math.max(maxDepth, depth);
58-
}
59-
else {
60-
for (NestedInteger i : n.getList()) {
61-
updateMaxDepth(i, depth+1);
53+
private void maxDepthHelper(List<NestedInteger> nestedList, int currLevel) {
54+
maxDepth = Math.max(maxDepth, currLevel);
55+
56+
for (NestedInteger nestedInteger : nestedList) {
57+
if (!nestedInteger.isInteger()) {
58+
maxDepthHelper(nestedInteger.getList(), currLevel + 1);
6259
}
6360
}
6461
}

0 commit comments

Comments
 (0)