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

    Hide Tags
     Linked List Two Pointers
     

      简单的快慢指针问题。
    #include <iostream>
    using namespace std;
    
    /**
     * 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)  return NULL;
            ListNode * fastp = head, * slowp = head;
            for(int i =0;i<n;i++)
                fastp = fastp->next;
            if(fastp==NULL) return head->next;
            while(fastp->next!=NULL){
                fastp = fastp ->next;
                slowp = slowp ->next;
            }
            slowp->next = slowp->next->next;
            return head;
        }
    };
    
    int main()
    {
        return 0;
    }
  • 相关阅读:
    通知协议KVO的用法
    UIImageView用法
    默默的学习!
    多输入参数的方法
    一本书的摘录
    实例、局部、静态变量(java)
    分数相加的例题
    类的继承
    多线程
    单例
  • 原文地址:https://www.cnblogs.com/Azhu/p/4324972.html
Copyright © 2011-2022 走看看