zoukankan      html  css  js  c++  java
  • Leetcode19.Remove Nth Node From End of List删除链表的倒数第N个节点

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

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.

    说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    方法一:

    两次遍历,第一次求长度。

    方法二:

    一次遍历,

    first指针和second指针中间隔了n个节点,second ->next就是要删除的节点。当要删除的倒数长度和链表的长度相同时,会访问空指针,所以再设置一个头节点。

    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            ListNode *h = new ListNode(0);
            h ->next = head;
            ListNode *first = h;
            ListNode *second = h;
            int temp = n + 1;
            while(temp--)
            {
                first = first ->next;
            }
            while(first)
            {
                first = first ->next;
                second = second ->next;
            }
            second ->next = second ->next ->next;
            return h ->next;
        }
    };
  • 相关阅读:
    使用ab进行页面的压力测试
    apache http server2.2 + tomcat5.5 性能调优
    php Try Catch多层级异常测试
    用flask实现的添加后保留原url搜索条件
    会议室预定设计
    day4
    day3
    day2
    day1
    redis介绍以及安装
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433887.html
Copyright © 2011-2022 走看看