zoukankan      html  css  js  c++  java
  • 174. 删除链表中倒数第n个节点

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

     注意事项

    链表中的节点个数大于等于n

    样例

    给出链表1->2->3->4->5->null和 n = 2.

    删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

    挑战 

    O(n)时间复杂度

    /**
     * Definition of ListNode
     * class ListNode {
     * public:
     *     int val;
     *     ListNode *next;
     *     ListNode(int val) {
     *         this->val = val;
     *         this->next = NULL;
     *     }
     * }
     */
    
    
    class Solution {
    public:
        /*
         * @param head: The first node of linked list.
         * @param n: An integer
         * @return: The head of linked list.
         */
        ListNode * removeNthFromEnd(ListNode * head, int n) {
            // write your code here
            if(n > 0) {
                ListNode *pBegin=head, *pEnd=head;
                while(n-- && pEnd!=NULL) {
                    pEnd = pEnd->next;
                }
                //  n<链表长度
                if(n == -1 && pEnd!=NULL) {
                    while(pEnd->next != NULL) {
                        pBegin = pBegin->next;
                        pEnd = pEnd->next;
                    }
                    pBegin->next = pBegin->next->next;
                    return head;
                }
                //  n>链表长度
                else if(n > -1 && pEnd!=NULL) {
                    return head;
                }
                //  n=链表长度
                else {
                    return head->next;
                }
            }
        }
    };
    

      

  • 相关阅读:
    php 手动搭建环境
    C#开源大全项目
    基于Aforge的物体运动识别-入门
    第二阶段站立会议02
    第二阶段站立会议01
    第一次绩效评估
    意见评论
    团队项目评论
    意见汇总
    对“小小之植物人”的博客检查结果
  • 原文地址:https://www.cnblogs.com/kanekiken/p/8026998.html
Copyright © 2011-2022 走看看