• 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;
                }
            }
        }
    };
    

      

  • 相关阅读:
    js中删除数组元素的几种方法
    js中的prototype
    分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    angularjs事件传递$on、$emit和$broadcast
    cron表达式
    angularjs中的时间格式化过滤
    angularjs中的$q
    IOS 错误
    Swift 错误
    IOS 控件
  • 原文地址:https://www.cnblogs.com/kanekiken/p/8026998.html
Copyright © 2020-2023  润新知