zoukankan      html  css  js  c++  java
  • 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.

    各种情况没想全,重复提交了很多次,需要再更加仔细的思考……

    /**
     * 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) {
            int i = 0;
                ListNode *p = head;
    
                for(i = 0; i < n-1 ; i++){      //notice second node from the end just one step from the end
                        p = p->next;
                }
                ListNode *r = NULL;             //r is the poiter ahead of q
                ListNode *q = head;
                while(p->next != NULL){
                    p = p->next;
                    r = q;
                    q = q->next;
                }
                if(r == NULL)
                     head = head->next;
                else{
    
                    r->next = q->next;
                }
                return head;
            }
        
    };
    

      

  • 相关阅读:
    「BZOJ 1000」A+B Problem
    「HNOI 2008」越狱
    蓝桥杯 拼音字母
    蓝桥杯 抽签
    蓝桥杯 快速排序
    [蓝桥杯] 最大比例
    [蓝桥杯] 交换瓶子
    [蓝桥杯] 四平方和
    [蓝桥杯] 剪邮票
    [蓝桥杯] 方格填数
  • 原文地址:https://www.cnblogs.com/pengyu2003/p/3572437.html
Copyright © 2011-2022 走看看