LeetCode每日一题 | 2487.从链表中移除节点

文章目录

    • 题目描述
    • 问题分析
    • 程序代码(Golang)

题目描述

原题链接

给你一个链表的头节点 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
}

你可能感兴趣的:(leetcode题解,leetcode,链表,算法,golang)