0
点赞
收藏
分享

微信扫一扫

力扣每日一题82:删除排序链表中的重复元素||

落拓尘嚣 2023-10-30 阅读 13

这篇也是凑数的 ....

描述 : 

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

题目 :

LeetCode 删除链表的倒数第Nge节点 : 

LCR 021. 删除链表的倒数第 N 个结点

分析 :

首先创建一个虚拟节点(哨兵节点) , 虚拟节点下一节点指向头节点这样我们移动元素的时候比较方便 , 用快慢指针的方式slow节点和fast节点指向虚拟节点 , fast指针比倒数第n个元素多走一步流出删除的节点 , 这样slow.next = slow.next.next 就删除了倒数第n个节点最后返回newNode.next节点也就是head节点 但是直接返回head节点会有一点问题 , 这里有什么问题 ?小伙伴们自己思考一下 .

解析 :

/**
 * 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) {
        ListNode newNode = new ListNode(-100);
        newNode.next = head;
        ListNode slow = newNode;
        ListNode fast = newNode;
        for(int i = 0;i<= n ;i++){
            fast = fast.next;
        } 
        while(fast != null){
            slow = slow.next;
            fast = fast.next;
        }
        slow.next = slow.next.next;
        return newNode.next;
    }
}

举报

相关推荐

0 条评论