admin管理员组

文章数量:1576378

题目

https://leetcode/problems/remove-nth-node-from-end-of-list/

题解

首先,找到倒数第 n 个节点的前一个节点 pre。

然后,令 pre.next = pre.next.next 即可。

/**
 * 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 removeNthFromEnd(ListNode head, int n) {
        int length = 0;
        ListNode node = head;
        while (node != null) {
            length++;
            node = node.next;
        }

        ListNode pre = head;
        int k = length - n;
        if (k == 0) return pre.next;
        while (k > 1) {
            pre = pre.next;
            k--;
        }
        
        pre.next = pre.next.next;
        return head;
    }
}

本文标签: 结点倒数链表RemoveLeetCode