文章目录
题目描述
给你一个链表的头节点 head 。
移除每个右侧有一个更大数值的节点。
返回修改后链表的头节点 head 。
问题分析
可以先递归处理右侧的所有结点,然后判断当前结点与右侧结点的大小关系:
- 若右侧结点不为空且右侧结点的值大于当前结点,则返回右侧结点。
- 否则,直接返回当前结点
程序代码(Golang)
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeNodes(head *ListNode) *ListNode {
if head == nil {
return nil
}
head.Next = removeNodes(head.Next)
if(head.Next != nil && head.Val < head.Next.Val) {
return head.Next
}
return head
}