1. 程式人生 > >【連結串列&刪除倒數第K個節點】Remove Nth Node From End of List

【連結串列&刪除倒數第K個節點】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.

題意:刪除連結串列的倒數第K個節點

解法:三個指標,p1指向尾節點,p2指向倒數第K個節點,pre指向要刪除節點的前一個節點,注意特殊情況,剛好要刪除的節點是頭結點的情況

public class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode p1 = head;
        ListNode p2 = null, pre=null;
        int k = 0;
        
        while(p1 != null){
            k++;
            p1 = p1.next;
            
            if(k == n){
                p2 = head;
            } 
            else if(k > n){
                pre = p2;
                p2 = p2.next;
            }
        }
        
        if(p2 != null){
            if(pre == null) head = p2.next;
            else pre.next = p2.next;
        }
        
        return head;
    }
}


相關推薦

連結串列&刪除倒數K節點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-&g

LeetCode題解19_刪除連結串列倒數N節點Remove-Nth-Node-From-End-of-List

更多 LeetCode 題解筆記可以訪問我的 github。 文章目錄 描述 解法:雙指標 思路 Java 實現 Python 實現 複雜度分析 描述 給定一個連結串列,

LeetCode 19. 刪除連結串列倒數N節點Remove Nth Node From End Of List

題目描述 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數

LeetCodeRemove Nth Node From End of List && 九度題目1517:連結串列倒數k結點

      Total Accepted: 8400 Total Submissions: 28316       Given a linked list, remove the nth node from the end of list and return its h

演算法設計與分析作業題十週:19. Remove Nth Node From End of List

題目 C++ solution /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListN

LeetCode & 劍指offer刷題連結串列題4:22 刪除連結串列倒數k結點(19. Remove Nth Node From End of List

【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 19. Remove Nth Node From End of List Given a linked list, remove the   n -th node from th

Leetcode連結串列 19. Remove Nth Node From End of List / 刪除連結串列倒數N節點

Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and

LeedCode--19--刪除連結串列倒數 n 節點

一、原題要求: 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->2->3-&

刪除連結串列倒數K節點(leetcode中級篇十九題)

給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.

java實現---查詢單鏈表的倒數K節點,要求只能遍歷一次連結串列;;;刪除連結串列倒數k節點

java實現 查詢單鏈表的倒數第K個節點,要求只能遍歷一次連結串列 刪除連結串列的倒數第k個節點 查詢單鏈表的倒數第K個節點,要求只能遍歷一次連結串列 定義兩個前後節點forward和backward 先

刪除連結串列倒數K節點(每日一道演算法題)

單向連結串列,刪除它的倒數第K個節點 //節點類 package LinkedList; /** * @author:MindMrWang *2017年11月22日 *:function:連結

刪除連結串列倒數k節點

1. 問題描述   給定一個單鏈表,刪除它的倒數第k個節點。例如給定連結串列: 1→2→3→4→5,刪除它的倒數第二個節點後變為 1→2→3→5。可以假設倒數第k個節點總是存在。 2. 方法與思路   很容易想到第一種方法,就是先對單鏈表進行進行一次遍

劍指Offer學習面試題15 :連結串列倒數k結點

題目:輸入一個連結串列,輸出該連結串列中倒數第k 個結點.為了符合大多數人的習慣,本題從1 開始計數,即連結串列的尾結點是倒數第1 個結點.例如一個連結串列有6 個結點,從頭結點開始它們的值依次是1 、2、3、4、5 、6。這個個連結串列的倒數第3 個結點是值為

leetcode:Remove Nth Node From End of List刪除連結串列倒數n節點面試演算法題

題目: Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->

劍指offer____連結串列倒數k節點

輸入一個連結串列,輸出該連結串列中倒數第k個結點。   struct ListNode {     int val;     struct ListNode *next;     ListNode

演算法---輸出單向連結串列倒數K節點

    輸出單向連結串列中倒數第K個節點,比如我們現在有int型別的1,2,3,4,5,6,7,8組成的一個單向連結串列,求倒數第三個元素。如圖所示:     我們正常的思路就是從後往前推倒數第K個元素,這裡有這樣幾個問題。首先是單向連結串列的限制,連結

劍指Offer-連結串列倒數k節點

題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 題解:先統計連結串列的總節點數,然後求出倒數第k個節點是順序遍歷的第幾個節點。可以採用線性表儲存每一個位置的節點,然後查詢則比較快些,不用再遍歷連結串列。 import java.util.ArrayList; import

14.連結串列倒數k節點

PS:這是一道出境率極高的題目,記得去年參加校園招聘時我看到了3次,但是每次寫的都不完善。 一、題目:連結串列的倒數第k個節點 題目:輸入一個連結串列,輸出該連結串列中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即連結串列的尾結點是倒數第1個結點

劍指offer:連結串列倒數k節點

題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 首先想到的是從頭結點開始遍歷到連結串列的末尾,然後往前回溯k個節點,但是回溯?  這種方式只適用於雙向連結串列,對於單向連結串列,是不可行的。 另外,如果我們已知了連結串列的長度,為n,那麼倒數第k個節點,也

連結串列的初始化以及查詢連結串列倒數k節點的值

package com.xhy.stackandqueue; public class LinkedList { public static class Node { int value; Node next; public Nod