zoukankan      html  css  js  c++  java
  • [LeetCode] #19 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.

    题目很简单,设置两个指针相隔n-1,一起走,走后一个指针走到头时,前一个指针正好在要删除的节点位置。要注意链表长度小于n的情况。时间:7ms。

    我的代码:

    /**
    * 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) {
            if (head == NULL || n == 0)
                return head;
            ListNode *pf, *pl,*temp=NULL;
            pf = pl = head;
            int i = 0;
            for (; i < n-1; ++i){
                if (pl->next)
                    pl = pl->next;
                else
                    return head;
            }
            while (pl->next){
                temp = pf;
                pl = pl->next;
                pf = pf->next;
            }
            if (temp == NULL){
                head = pf->next;
                delete pf;
            }
            else{
                temp->next = pf->next;
                delete pf;
            }
            return head;
        }
    };
    “If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.”
  • 相关阅读:
    模块和包
    mysql视图、存储过程等
    mysql 索引
    sql语句
    HTTP协议
    Django中的form组件
    数据结构
    一些常用函数
    C/C++中tag和type
    什么是compile-time-constant
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4450913.html
Copyright © 2011-2022 走看看