【每日一题】2487. 从链表中移除节点-2024.1.3

发布时间:2024年01月03日

题目:

2487. 从链表中移除节点

给你一个链表的头节点?head?。

移除每个右侧有一个更大数值的节点。

返回修改后链表的头节点?head?

示例 1:

输入:head = [5,2,13,3,8]
输出:[13,8]
解释:需要移除的节点是 5 ,2 和 3 。
- 节点 13 在节点 5 右侧。
- 节点 13 在节点 2 右侧。
- 节点 8 在节点 3 右侧。

示例 2:

输入:head = [1,1,1,1]
输出:[1,1,1,1]
解释:每个节点的值都是 1 ,所以没有需要移除的节点。

提示:

  • 给定列表中的节点数目在范围?[1, 105]?内
  • 1 <= Node.val <= 105

解答:

?

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNodes(ListNode head) {
        Deque<ListNode> stack=new ArrayDeque<ListNode>();
        for(;head!=null;head=head.next){
            stack.push(head);
        }
        for(;!stack.isEmpty();stack.pop()){
            if(head==null||stack.peek().val>=head.val){
                stack.peek().next=head;
                head=stack.peek();
            }
        }
        return head;
    }
}

结果:

?

文章来源:https://blog.csdn.net/weixin_45142381/article/details/135356261
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。