首页 > 编程语言 >LeetCode 19 -- Remove Nth Node From End of List

LeetCode 19 -- Remove Nth Node From End of List

时间:2023-02-10 10:57:25浏览次数:38  
标签:Node head le ListNode int fast next Nth End

Problem

Given the head of a linked list, remove the \(n\)-th node from the end of the list and return its head.

Example 1

Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2

Input: head = [1], n = 1
Output: []

Example 3

Input: head = [1,2], n = 1
Output: [1]

Constraints

  • The number of nodes in the list is sz.
  • \(1 \le\) sz \(\le 30\)
  • \(0 \le\) Node.val \(\le 100\)
  • \(1 \le\) n \(\le\) sz
// Definition for singly-linked list.
struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

Solution

ListNode* removeNthFromEnd(ListNode* head, int n) {
    ListNode* dummy = new ListNode(0, head);
    ListNode* fast = head;
    ListNode* slow = head;
    for (int i = 0; i < n; i++)
        fast = fast->next;
    while (fast->next != nullptr) {
        slow = slow->next;
        fast = fast->next;
    }
    slow->next = slow->next->next;
    return dummy->next;
}

标签:Node,head,le,ListNode,int,fast,next,Nth,End
From: https://www.cnblogs.com/Not-Even-Wrong/p/17108166.html

相关文章