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

    problem:

    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.

     
     Solution:解决方式采用双指针,前后指针相差n
     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* removeNthFromEnd(ListNode* head, int n) {
    12     //题意是要删除从最后一个节点往前数的第n个节点 考虑到只有一个节点时没有办法删除 加一个dummy
    13     
    14     ListNode *dummy=new ListNode(-1);
    15     dummy->next=head;
    16     ListNode *pre=dummy;
    17     ListNode *last=dummy;
    18     
    19     //找到last的初始位置
    20     while(n--)
    21     {
    22         last=last->next;   
    23     }
    24     
    25     while(last->next!=NULL)
    26     {
    27         pre=pre->next;
    28         last=last->next;
    29     }
    30     //删除节点 
    32     ListNode *object=pre->next;
    33     pre->next=pre->next->next;
    34     delete object;
    35     
    36     return dummy->next;
    37     
    38     }
    39 };
  • 相关阅读:
    Netty相关知识积累
    Java内存管理
    使用nginx-upload-module搭建文件上传服务器
    mysql 5.7自动安装脚本
    CDH5集群搭建
    Linux常用命令
    编译原理要点四
    编译原理要点三
    编译原理要点二:
    编译原理要点
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4651549.html
Copyright © 2011-2022 走看看