zoukankan      html  css  js  c++  java
  • leetcode_19_Remove Nth Node From End of List (easy)

    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.

    解体:
    应该再一次循环,但是不知道链表总共多少数据

    简单的两次循环,但如何才能预知未来>_<

    (提示:英文翻译错误,哎,我的英文是体育老师教的)


    #include <iostream>
    using namespace std;

    struct ListNode {
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(NULL) {}
     };

    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            ListNode *now = head;
            int i = 0;
            for(;now!=NULL;now = now->next){
                i++;
            }
            if(n>i){
                return NULL;
            }
            if(n==i){
                return head->next;
            }
            int j = 0;
            for(now=head;now!=NULL;now = now->next){
                j++;
                if(j == i-n){
                    ListNode *next = now->next->next;
                    delete now->next;
                    now->next = next;
                    break;
                }
            }
            return head;
        }
    };

    void printList(ListNode *head){
        ListNode *now = head;
        for(;now!=NULL;now = now->next){
             cout<<now->val<<"->";
        }
    }

    int main(int argc, const char * argv[]) {
        ListNode *head = (ListNode *)malloc(sizeof(ListNode));
        head->val = 1;
        head->next = NULL;
        ListNode *now = head;
        for(int i=2;i<6;i++){
            ListNode *next = (ListNode *)malloc(sizeof(ListNode));
            next->val = i;
            next->next = NULL;
            now->next = next;
            now = next;
        }
        cout<<"before"<<endl;
        printList(head);
        cout<<endl;
        Solution a;
        ListNode *final = a.removeNthFromEnd(head, 2);
        cout<<"after"<<endl;
        printList(final);
        return 0;
    }
    什么,尽然过了,what

     
  • 相关阅读:
    Android最佳性能实践(二)——分析内存的使用情况
    Android最佳性能实践(一)——合理管理内存
    Java反射机制
    Java基础知识总结之IO流
    Java之IO流详解
    CentOS 6.4安装中文支持
    because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'style-src' was not explicitly set, so 'default-src' is used as a fallback.错误应该怎么解决?
    在asp.net添加引用Microsoft.VisualBasic全过程
    SQL SERVER 2012安装介质
    Microsoft SQL Server附加数据库错误:5123
  • 原文地址:https://www.cnblogs.com/ganeveryday/p/4903452.html
Copyright © 2011-2022 走看看