zoukankan      html  css  js  c++  java
  • Leetcode Remove Nth Node From End of List

    Given a linked list, remove the nth node from the end of list and return its head.

    For example,

       Given linked list: 1->2->3->4->5, and n = 2.
    
       After removing the second node from the end, the linked list becomes 1->2->3->5.
    

    Note:
    Given n will always be valid.
    Try to do this in one pass.

    题意转换一下就是求解单链表的倒数第k个节点,解法是设置两个指针,一个在前一个在后,之间的距离为k,同时向前移动,有点类似滑动窗口,当第一个指针到达链表尾的时候,第二个指针即为倒数第k个节点,具体的见编程之美

    ListNode *removeNthFromEnd(ListNode *head, int n){
        if(head == NULL) return NULL;
        ListNode *q = head,*p = head;
        for(int i = 0 ; i < n - 1; ++ i)
            q = q -> next;
        ListNode *pPre = NULL;
        while(q->next){
            pPre = p;
            p = p->next;
            q = q->next;
        }
        if(pPre == NULL){
            pPre = p->next;
            delete p;
        }else{
            pPre ->next = p ->next;
            delete p;
        }
        return head;
    }
  • 相关阅读:
    python之isinstance和issubclass
    python中类的继承
    python中面向对象
    python中常用的内置模块
    Python常用模块
    python中的常用内置模块
    python中的包、模块及导入
    python中的内置函数(二)
    国内7大核心期刊
    PS学习列表
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3629728.html
Copyright © 2011-2022 走看看