前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 题目解析之 Remove Nth Node From End of List

Leetcode 题目解析之 Remove Nth Node From End of List

原创
作者头像
ruochen
发布2022-01-14 11:42:05
1.3K0
发布2022-01-14 11:42:05
举报
文章被收录于专栏:若尘的技术专栏

Given a linked list, remove the nth node from the end of list and return its head.

For example,

Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5.

Note:

Given n will always be valid.

Try to do this in one pass.

题目中说n是合法的,就不用对n进行检查了。用标尺的思想,两个指针相距为n-1,后一个到表尾,则前一个到n了。(p为second,q为first)

  1. 指针p、q指向链表头部;
  2. 移动q,使p和q差n-1;
  3. 同时移动p和q,使q到表尾;
  4. 删除p。
代码语言:javascript
复制
public ListNode removeNthFromEnd(ListNode head, int n) {

    if (head == null || head.next == null) {
        return null;
    }

    ListNode first = head;
    ListNode second = head;

    for (int i = 0; i < n; i++) {
        first = first.next;
        if (first == null) {
            return head.next;
        }
    }

    while (first.next != null) {
        first = first.next;
        second = second.next;
    }

    second.next = second.next.next;

    return head;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档