fix 1019: update solution

This commit is contained in:
novahe
2021-12-02 15:05:35 +08:00
parent a45992e7de
commit f49a36789f
2 changed files with 25 additions and 30 deletions

View File

@ -14,25 +14,22 @@ type ListNode = structures.ListNode
* Next *ListNode * Next *ListNode
* } * }
*/ */
// 解法一 单调栈 // 解法一 单调栈
func nextLargerNodes(head *ListNode) []int { func nextLargerNodes(head *ListNode) []int {
res, indexes, nums := make([]int, 0), make([]int, 0), make([]int, 0) type node struct {
p := head index, val int
for p != nil {
nums = append(nums, p.Val)
p = p.Next
} }
for i := 0; i < len(nums); i++ { var monoStack []node
res = append(res, 0) var res []int
} for head != nil {
for i := 0; i < len(nums); i++ { for len(monoStack) > 0 && monoStack[len(monoStack)-1].val < head.Val {
num := nums[i] res[monoStack[len(monoStack)-1].index] = head.Val
for len(indexes) > 0 && nums[indexes[len(indexes)-1]] < num { monoStack = monoStack[:len(monoStack)-1]
index := indexes[len(indexes)-1]
res[index] = num
indexes = indexes[:len(indexes)-1]
} }
indexes = append(indexes, i) monoStack = append(monoStack, node{len(res), head.Val})
res = append(res, 0)
head = head.Next
} }
return res return res
} }

View File

@ -70,29 +70,27 @@ package leetcode
* Next *ListNode * Next *ListNode
* } * }
*/ */
// 解法一 单调栈 // 解法一 单调栈
func nextLargerNodes(head *ListNode) []int { func nextLargerNodes(head *ListNode) []int {
res, indexes, nums := make([]int, 0), make([]int, 0), make([]int, 0) type node struct {
p := head index, val int
for p != nil {
nums = append(nums, p.Val)
p = p.Next
} }
for i := 0; i < len(nums); i++ { var monoStack []node
res = append(res, 0) var res []int
} for head != nil {
for i := 0; i < len(nums); i++ { for len(monoStack) > 0 && monoStack[len(monoStack)-1].val < head.Val {
num := nums[i] res[monoStack[len(monoStack)-1].index] = head.Val
for len(indexes) > 0 && nums[indexes[len(indexes)-1]] < num { monoStack = monoStack[:len(monoStack)-1]
index := indexes[len(indexes)-1]
res[index] = num
indexes = indexes[:len(indexes)-1]
} }
indexes = append(indexes, i) monoStack = append(monoStack, node{len(res), head.Val})
res = append(res, 0)
head = head.Next
} }
return res return res
} }
``` ```