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

    地址 https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

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

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

    说明:

    给定的 n 保证是有效的。

    进阶:

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

    解法 使用快慢指针  一个先出发 一个n次迭代后出发  先出发指针指向结尾 那么后出发指针就是要删除的节点

    注意边界

    代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            ListNode* p1 = head; ListNode* p2 = head;
            for(int i =0;i < n;i++){
                p1 = p1->next;
            }
            
            if(p1 == NULL) return p2->next;
            
            while(p1->next != NULL){
                p1=p1->next; p2 = p2->next;
            }
            
            p2->next = p2->next->next;
             
            
            return head;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/itdef/p/11458480.html
Copyright © 2011-2022 走看看