• leetcode: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.

    算法:
    1 准备两个指针first, second
    2 先让fisrt走n步
    3 让fisrt和second同一时候走直到first遇到结尾
    4 要用一个temp指针来记录second前一个node。用来删除second用。

    /**
     * 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) {
           ListNode *first = head, *second = head;
         ListNode *temp = second;
     
         for(int i = 0; i < n; i++) {
             first = first -> next;
         }
     
         while(first) {
             first = first -> next;
             temp = second;
            second = second -> next;
         }
     
         if(second == head) {
             head = head -> next;
         }
         else {
             temp -> next = second -> next;
         }
     
     
         return head;
        }
    };
    


  • 相关阅读:
    Linux常用命令2
    Linux常用命令1
    Nginx配置Kafka
    SpringBoot整合Druid
    spring boot jpa
    mybatis-plus_2
    copy data to map
    HashMap容量问题
    在SpringBoot主启动类中获取实例化的Bean
    Linux环境中Rsync增量备份文件
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6928346.html
Copyright © 2020-2023  润新知