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

     
  • 相关阅读:
    生成数据库结构设计说明书的存储过程
    C#检测上传图片是否安全函数
    设定下拉列表控件DropDownList,复选按钮CheckBox,RadioButton默认值总结测试
    C#批量重命名工具V2.0
    个人一些工作经验方式积累办法
    修身《孟子》尽心篇
    linux 命令 lspci lsusb
    重拾信心
    linux eclipse
    A lunch in Gordon Market with WWF
  • 原文地址:https://www.cnblogs.com/ganeveryday/p/4903452.html
Copyright © 2011-2022 走看看