Skip to content

Commit f49a367

Browse files
committed
fix 1019: update solution
1 parent a45992e commit f49a367

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

leetcode/1019.Next-Greater-Node-In-Linked-List/1019. Next Greater Node In Linked List.go

+12-15
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,22 @@ type ListNode = structures.ListNode
1414
* Next *ListNode
1515
* }
1616
*/
17+
1718
// 解法一 单调栈
1819
func nextLargerNodes(head *ListNode) []int {
19-
res, indexes, nums := make([]int, 0), make([]int, 0), make([]int, 0)
20-
p := head
21-
for p != nil {
22-
nums = append(nums, p.Val)
23-
p = p.Next
24-
}
25-
for i := 0; i < len(nums); i++ {
26-
res = append(res, 0)
20+
type node struct {
21+
index, val int
2722
}
28-
for i := 0; i < len(nums); i++ {
29-
num := nums[i]
30-
for len(indexes) > 0 && nums[indexes[len(indexes)-1]] < num {
31-
index := indexes[len(indexes)-1]
32-
res[index] = num
33-
indexes = indexes[:len(indexes)-1]
23+
var monoStack []node
24+
var res []int
25+
for head != nil {
26+
for len(monoStack) > 0 && monoStack[len(monoStack)-1].val < head.Val {
27+
res[monoStack[len(monoStack)-1].index] = head.Val
28+
monoStack = monoStack[:len(monoStack)-1]
3429
}
35-
indexes = append(indexes, i)
30+
monoStack = append(monoStack, node{len(res), head.Val})
31+
res = append(res, 0)
32+
head = head.Next
3633
}
3734
return res
3835
}

website/content/ChapterFour/1000~1099/1019.Next-Greater-Node-In-Linked-List.md

+13-15
Original file line numberDiff line numberDiff line change
@@ -70,29 +70,27 @@ package leetcode
7070
* Next *ListNode
7171
* }
7272
*/
73+
7374
// 解法一 单调栈
7475
func nextLargerNodes(head *ListNode) []int {
75-
res, indexes, nums := make([]int, 0), make([]int, 0), make([]int, 0)
76-
p := head
77-
for p != nil {
78-
nums = append(nums, p.Val)
79-
p = p.Next
80-
}
81-
for i := 0; i < len(nums); i++ {
82-
res = append(res, 0)
76+
type node struct {
77+
index, val int
8378
}
84-
for i := 0; i < len(nums); i++ {
85-
num := nums[i]
86-
for len(indexes) > 0 && nums[indexes[len(indexes)-1]] < num {
87-
index := indexes[len(indexes)-1]
88-
res[index] = num
89-
indexes = indexes[:len(indexes)-1]
79+
var monoStack []node
80+
var res []int
81+
for head != nil {
82+
for len(monoStack) > 0 && monoStack[len(monoStack)-1].val < head.Val {
83+
res[monoStack[len(monoStack)-1].index] = head.Val
84+
monoStack = monoStack[:len(monoStack)-1]
9085
}
91-
indexes = append(indexes, i)
86+
monoStack = append(monoStack, node{len(res), head.Val})
87+
res = append(res, 0)
88+
head = head.Next
9289
}
9390
return res
9491
}
9592

93+
9694
```
9795

9896

0 commit comments

Comments
 (0)