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

题目:

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

解答:

【每日一题】2487. 从链表中移除节点-2024.1.3_第1张图片

【每日一题】2487. 从链表中移除节点-2024.1.3_第2张图片

【每日一题】2487. 从链表中移除节点-2024.1.3_第3张图片 

代码:

/**
 * 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 stack=new ArrayDeque();
        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;
    }
}

结果:

 【每日一题】2487. 从链表中移除节点-2024.1.3_第4张图片

你可能感兴趣的:(leetcode刷题笔记,算法,leetcode,数据结构)