【連結串列&刪除倒數第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.
解法:三個指標,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. 當刪除了倒數
【LeetCode】Remove 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