力扣:1019. 链表中的下一个更大节点

This commit is contained in:
huangge1199 2021-03-05 13:28:21 +08:00
parent a8791d671a
commit e86d3e2cd0

View File

@ -0,0 +1,64 @@
package com.code.leet.study.t2021.t20210305;
import com.code.leet.entiy.ListNode;
import java.util.ArrayList;
import java.util.List;
/**
* 给出一个以头节点 head 作为第一个节点的链表链表中的节点分别编号为node_1, node_2, node_3, ...
* <p>
* 每个节点都可能有下一个更大值next larger value对于 node_i如果其 next_larger(node_i)  node_j.val那么就有 j > i   node_j.val > node_i.val j 是可能的选项中最小的那个如果不存在这样的 j那么下一个更大值为 0 
* <p>
* 返回整数答案数组 answer其中 answer[i] = next_larger(node_{i+1}) 
* <p>
* 注意在下面的示例中诸如 [2,1,5] 这样的输入不是输出是链表的序列化表示其头节点的值为 2第二个节点值为 1第三个节点值为 5
* <p>
*  
* <p>
* 示例 1
* <p>
* 输入[2,1,5]
* 输出[5,5,0]
* 示例 2
* <p>
* 输入[2,7,4,3,5]
* 输出[7,0,5,5,0]
* 示例 3
* <p>
* 输入[1,7,5,1,9,2,5,1]
* 输出[7,9,9,9,0,5,0,0]
*  
* <p>
* 提示
* <p>
* 对于链表中的每个节点1 <= node.val <= 10^9
* 给定列表的长度在 [0, 10000] 范围内
* <p>
* 来源力扣LeetCode
* 链接https://leetcode-cn.com/problems/next-greater-node-in-linked-list
* 著作权归领扣网络所有商业转载请联系官方授权非商业转载请注明出处
*/
public class NextLargerNodes {
/**
* 1019. 链表中的下一个更大节点
*/
public int[] nextLargerNodes(ListNode head) {
List<Integer> list = new ArrayList<>();
while (head != null) {
list.add(head.val);
head = head.next;
}
int size = list.size();
int[] result = new int[size];
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++) {
if (list.get(j) > list.get(i)) {
result[i] = list.get(j);
break;
}
}
}
return result;
}
}