zoukankan      html  css  js  c++  java
  • 19. 删除链表的倒数第N个节点

    知乎ID: 码蹄疾
    码蹄疾,毕业于哈尔滨工业大学。
    小米广告第三代广告引擎的设计者、开发者;
    负责小米应用商店、日历、开屏广告业务线研发;
    主导小米广告引擎多个模块重构;
    关注推荐、搜索、广告领域相关知识;

    题目

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
    示例:
    给定一个链表: 1->2->3->4->5, 和 n = 2.
    当删除了倒数第二个节点后,链表变为 1->2->3->5.
    说明:
    给定的 n 保证是有效的。
    进阶:
    你能尝试使用一趟扫描实现吗?

    分析

    链表的题目基本上都是优先考虑双指针。一个指针先走N步,然后两个指针同步移动到链表末尾,移除前一个指针所指着的节点即可。但是越简单的题目越要考虑边界条件,不要掉坑里面,具体看代码吧,争取一次Bugfree.

    Code

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode right = head;
            ListNode left = head;
            for (int i = 0; i < n; i++) {
                right = right.next;
            }
    
            if (right == null) {
                head = head.next;
                return head;
            }
            while (right.next != null) {
                left = left.next;
                right = right.next;
            }
            left.next = left.next.next;
            return head;
        }
    }

    扫码关注

                   微信扫码关注更多题解!

  • 相关阅读:
    qq
    qqq
    q
    .json文件
    q
    q
    q
    找jar包的网址
    1qq
    day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)
  • 原文地址:https://www.cnblogs.com/acceml/p/9278209.html
Copyright © 2011-2022 走看看