19. 删除链表的倒数第N个节点

2020-07-19  本文已影响0人  卡尔书院

题目

中文题目
英文题目

分析 : (斜体是被推翻或者舍弃的 , 黑体是斜体的替代办法)

正确代码 :

/*
 * @lc app=leetcode.cn id=19 lang=java
 *
 * [19] 删除链表的倒数第N个节点
 */

// @lc code=start

// //Definition for singly-linked list.
// class ListNode {
//      int val;
//      ListNode next;
//      ListNode(int x) { val = x; }
// }

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode secondaryNode = new ListNode(-1);
        secondaryNode.next = head;  //创建辅助节点
        ListNode fasNode = secondaryNode;
        ListNode sloNode = secondaryNode;   //快慢节点
        for (int i = 0; i < (n+1); i++) {   //快节点先走
            fasNode = fasNode.next;
        }
        while(fasNode != null){ //两指针等距遍历
            fasNode = fasNode.next;
            sloNode = sloNode.next;
        }
        sloNode.next = sloNode.next.next;   //删除

        return secondaryNode.next;
    }
}
// @lc code=end



问题 :

占用空间较大

上一篇下一篇

猜你喜欢

热点阅读