LeeCode-删除链表的倒数第 n 个结点

96 阅读1分钟

算法记录

LeetCode 题目:

  给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。


说明

一、题目

  输入:head = [1,2,3,4,5], n = 2

  输出:[1,2,3,5]

二、分析

  • 先求取整个链表的长度,在进行 m - n 的遍历即可找到需要删除点的父节点,直接删除即可。
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode hair = new ListNode(-1, head);
        if(head == null || head.next == null) return null;
        int len = 0;
        ListNode temp = head;
        while(temp != null) {
            len ++;
            temp = temp.next;
        }
        temp = hair;
        for(int i = 0; i < len - n; i++) {
            temp = temp.next;
        }
        temp.next = temp.next.next;
        return hair.next;
    }
}

总结

熟悉链表的遍历和节点的删除。