码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-01 18:17:53      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:class   节点   -o   head   turn   solution   next   des   href   

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

1A,开心~

注意,题目有进阶要求,只允许扫链表1次,
很多链表题跟这个思路一样,在遍历链表的时候,维护一个距离与当前头指针为(n+1)的尾巴标记P即可,当扫到链表结尾的时候,此时P正好指向待删除节点的前一个节点

注意几个细节处理:
0:注意P的初始化
1:n>链表长度时,无需处理
2:n == 链表长度时,P此时仍没有指向任何一个节点,需要特判把头节点删除

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode org = head;
        ListNode ans = null;

        int cnt = 0;

        while (head != null) {
            head = head.next;
            cnt++;
            if (cnt > n) {
                if (ans == null) ans = org;
                else {
                    ans = ans.next;
                }
            }
        }

        if (ans != null && n > 0) {
            if (n == 1) {
                ans.next = null;
            } else {
                ans.next = ans.next.next;
            }
        }

        if (cnt == n) {
            org = org.next;
        }

        return org;
    }
}

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

标签:class   节点   -o   head   turn   solution   next   des   href   

原文地址:https://www.cnblogs.com/acbingo/p/9250754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!