给你一个链表的头节点 head
。
移除每个右侧有一个更大数值的节点。
返回修改后链表的头节点 head
。
题解:
1.遍历链表节点的值,并放入stack栈中,当遇到大于栈顶的值时,对栈进行弹出操作。
2.把栈中剩下的值变成节点然后连接起来。
3.创建一个哨兵节点作为返回值。
class Solution:
def removeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
stack = []
while head:
while stack and stack[-1] < head.val:
stack.pop()
stack.append(head.val)
head = head.next
node = ListNode(stack[0])
p = node
for i in range(1, len(stack)):
node.next = ListNode(stack[i])
node = node.next
return p