专栏首页desperate633LeetCode 19. Remove Nth Node From End of List题目分析代码

LeetCode 19. Remove Nth Node From End of List题目分析代码

题目

给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。

样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

分析

这里利用了一个技巧,倒数第n个节点。 先顺数n个节点,设置两个指针,这时候跟着遍历完,当第一个指针,到末尾时,第二根指针正好指向倒数第n个节点。

代码

/**
 * Definition for ListNode.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int val) {
 *         this.val = val;
 *         this.next = null;
 *     }
 * }
 */ 
public class Solution {
    /**
     * @param head: The first node of linked list.
     * @param n: An integer.
     * @return: The head of linked list.
     */
    ListNode removeNthFromEnd(ListNode head, int n) {
        // write your code here
        if (n <= 0) {
            return null;
        }
        
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        
        ListNode preDelete = dummy;
        for (int i = 0; i < n; i++) {
            if (head == null) {
                return null;
            }
            head = head.next;
        }
        while (head != null) {
            head = head.next;
            preDelete = preDelete.next;
        }
        preDelete.next = preDelete.next.next;
        return dummy.next;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LintCode 回文链表题目分析代码

    链表由于其特殊的结构,没法像数组那样判断回文,所以比较原始的方法,先找到链表的中间节点,然后将后半部分反转,然后逐个比较即可。 链表中的算法,通常以寻找链表中...

    desperate633
  • LintCode 删除排序链表中的重复数字 II题目分析代码

    给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->...

    desperate633
  • LintCode 翻转链表 II题目代码

    desperate633
  • LintCode 回文链表题目分析代码

    链表由于其特殊的结构,没法像数组那样判断回文,所以比较原始的方法,先找到链表的中间节点,然后将后半部分反转,然后逐个比较即可。 链表中的算法,通常以寻找链表中...

    desperate633
  • 有环链表

    一份执着✘
  • 剑指offer 反转链表

    week
  • 数据结构与算法(三)链表

    •插入操作的时候 如果想在角标1添加,要找到角标1的上一个元素。•边界问题 例如首个元素添加 以及最后一个元素添加

    老沙
  • 删除链表中倒数第n个节点

    一份执着✘
  • LeetCode-19 删除链表中的倒数第N个节点

    今天我们学习第19题删除链表中的倒数第N个节点,这是一道中等题。这个题属于面试中的高频题,一定要能手写出来。下面我们看看这道题的题目描述。

    用户3470542
  • [算法总结] 一文搞懂面试链表题

    链表是面试过程中经常被问到的,这里把剑指offer 和 LeetCode 中的相关题目做一个汇总,方便复习。

    尾尾部落

扫码关注云+社区

领取腾讯云代金券