Skip to content

Commit 2b2ae6b

Browse files
add 1019
1 parent bd7feb8 commit 2b2ae6b

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ _If you like this project, please leave me a star._ ★
113113
|1022|[Sum of Root To Leaf Binary Numbers](https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1022.java) | |Easy|
114114
|1021|[Remove Outermost Parentheses](https://leetcode.com/problems/remove-outermost-parentheses/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1021.java) | |Easy|
115115
|1020|[Number of Enclaves](https://leetcode.com/problems/number-of-enclaves/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1020.java) | |Medium|Graph, DFS, BFS, recursion|
116+
|1019|[Next Greater Node In Linked List](https://leetcode.com/problems/next-greater-node-in-linked-list/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1019.java) | |Medium|Linked List, Stack|
116117
|1018|[Binary Prefix Divisible By 5](https://leetcode.com/problems/binary-prefix-divisible-by-5/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1018.java) | |Easy|
117118
|1014|[Best Sightseeing Pair](https://leetcode.com/problems/best-sightseeing-pair/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1014.java) | |Medium|
118119
|1013|[Partition Array Into Three Parts With Equal Sum](https://leetcode.com/problems/partition-array-into-three-parts-with-equal-sum/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1013.java) | |Easy|
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.fishercoder.solutions;
2+
3+
import com.fishercoder.common.classes.ListNode;
4+
5+
/**
6+
* 1019. Next Greater Node In Linked List
7+
*
8+
* We are given a linked list with head as the first node. Let's number the nodes in the list: node_1, node_2, node_3, ... etc.
9+
* Each node may have a next larger value: for node_i, next_larger(node_i) is the node_j.val such that j > i, node_j.val > node_i.val,
10+
* and j is the smallest possible choice. If such a j does not exist, the next larger value is 0.
11+
* Return an array of integers answer, where answer[i] = next_larger(node_{i+1}).
12+
* Note that in the example inputs (not outputs) below, arrays such as [2,1,5] represent the serialization of a linked list
13+
* with a head node value of 2, second node value of 1, and third node value of 5.
14+
*
15+
* Example 1:
16+
* Input: [2,1,5]
17+
* Output: [5,5,0]
18+
*
19+
* Example 2:
20+
* Input: [2,7,4,3,5]
21+
* Output: [7,0,5,5,0]
22+
*
23+
* Example 3:
24+
* Input: [1,7,5,1,9,2,5,1]
25+
* Output: [7,9,9,9,0,5,0,0]
26+
*
27+
* Note:
28+
* 1 <= node.val <= 10^9 for each node in the linked list.
29+
* The given list has length in the range [0, 10000].
30+
* */
31+
public class _1019 {
32+
public static class Solution1 {
33+
public int[] nextLargerNodes(ListNode head) {
34+
int len = findLength(head);
35+
int[] result = new int[len];
36+
ListNode tmp = head;
37+
int i = 0;
38+
while (tmp != null) {
39+
result[i++] = findNextLarger(tmp.val, tmp);
40+
tmp = tmp.next;
41+
}
42+
return result;
43+
}
44+
45+
private int findNextLarger(int val, ListNode head) {
46+
ListNode tmp = head.next;
47+
while (tmp != null) {
48+
if (tmp.val > val) {
49+
return tmp.val;
50+
}
51+
tmp = tmp.next;
52+
}
53+
return 0;
54+
}
55+
56+
private int findLength(ListNode head) {
57+
ListNode tmp = head;
58+
int count = 0;
59+
while (tmp != null) {
60+
tmp = tmp.next;
61+
count++;
62+
}
63+
return count;
64+
}
65+
}
66+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.common.classes.ListNode;
4+
import com.fishercoder.common.utils.LinkedListUtils;
5+
import com.fishercoder.solutions._1019;
6+
import org.junit.BeforeClass;
7+
import org.junit.Test;
8+
9+
import static org.junit.Assert.assertArrayEquals;
10+
11+
public class _1019Test {
12+
private static _1019.Solution1 solution1;
13+
14+
@BeforeClass
15+
public static void setup() {
16+
solution1 = new _1019.Solution1();
17+
}
18+
19+
@Test
20+
public void test1() {
21+
ListNode head = LinkedListUtils.contructLinkedList(new int[]{2, 1, 5});
22+
assertArrayEquals(new int[]{5, 5, 0}, solution1.nextLargerNodes(head));
23+
}
24+
25+
@Test
26+
public void test2() {
27+
ListNode head = LinkedListUtils.contructLinkedList(new int[]{2, 7, 4, 3, 5});
28+
assertArrayEquals(new int[]{7, 0, 5, 5, 0}, solution1.nextLargerNodes(head));
29+
}
30+
31+
@Test
32+
public void test3() {
33+
ListNode head = LinkedListUtils.contructLinkedList(new int[]{1, 7, 5, 1, 9, 2, 5, 1});
34+
assertArrayEquals(new int[]{7, 9, 9, 9, 0, 5, 0, 0}, solution1.nextLargerNodes(head));
35+
}
36+
37+
}

0 commit comments

Comments
 (0)