劍指offer——鏈表中倒數第k個結點
輸入一個鏈表,輸出該鏈表中倒數第k個結點。
class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode* p1=pListHead,*p2=pListHead; int count=0; while(p1!=NULL){ count++; if(count>k) p2=p2->next; p1=p1->next; }return count<k?NULL:p2; } };
分析:用兩個指針來判斷,兩個指針差k個位置,當後面一個指針到尾部時,前面那個就在倒數第k個位置。還要註意判斷k大於鏈表長度的情況。
劍指offer——鏈表中倒數第k個結點
相關推薦
劍指Offer-鏈表中倒數第k個結點
== fin isp 長度 bre turn k個結點 nod ota 題目: 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路1: 使用指針遍歷鏈表,得到鏈表的長度len; 將指針指向鏈表頭部,向後移動len-k+1個長度,得到倒數第k個節點。 代碼1:
劍指Offer 鏈表中倒數第k個結點
n-k ont ava 復雜度 tps ng- 劍指offer views gpo 題目描述:輸入一個鏈表,輸出該鏈表中倒數第k個結點。 題目鏈接:鏈表中倒數第k個結點 思路:指向首結點的第1個指針走k-1步,如果後繼結點為空,則返回null,第1個指針指向第k
劍指offer——鏈表中倒數第k個結點
劍指offer 還要 nod 大於 list ota col 輸出 null 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 class Solution { public: ListNode* FindKthToTail(ListNode* pListHea
劍指offer---鏈表中倒數第k個節點
劍指offer ret -- code off plist listnode urn logs /* struct ListNode { int val; struct ListNode *next; ListNode(int x) :
劍指offer--連結串列中倒數第k個結點
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 解析 可以先便利一遍求出連結串列總長,再遍歷第二遍求出結點。 或者定義兩個指標,一個先遍歷到第k個結點,再兩個一起往後遍歷,前一個為
[劍指offer]連結串列中倒數第k個結點/反轉連結串列/合併兩個排序的連結串列
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 解釋: 針對該道題目,主要有兩種解法:一種是將連結串列的節點壓入棧,由於棧有一個特點是先進後出,因此倒數第k個變成了順數第k個;第二種解法是求連結串列第k個節點,相當於順序遍歷連結串列第(n-k
劍指Offer | 連結串列中倒數第k個結點
做了個劍指Offer的題目目錄,連結如下: https://blog.csdn.net/mengmengdastyle/article/details/80317246 一、題目 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 二、思路 (1)
劍指offer--連結串列中倒數第k個結點-java
題目描述: 輸入一個連結串列,輸出該連結串列中倒數第k個結點。(hint: 請務必使用連結串列。) 解題思路: 首先我們考慮到,用普通的思想,獲取連結串列的長度,然後輸出第length-k個元
劍指Offer面試題15(Java版):鏈表中倒數第K個結點
head 計數器 easy sta 相同 ret white style 輸出 題目: 輸入一個鏈表。輸出該鏈表中倒數第k哥結點。 為了符合大多數人的習慣,本題從1開始計數。即鏈表的尾結點是倒數第1個結點。 比如一個鏈表有6個結點。從頭結點開始它們的值依次是1。2。
《劍指Offer》題目:鏈表中倒數第k個結點
倒數 -- 輸出 col ota pan code 輸入 tno 題目描述:輸入一個鏈表,輸出該鏈表中倒數第k個結點 題目分析:因為不能直接從鏈表的尾部遍歷,所以要分兩步走: 第一步:從鏈表的頭部開始遍歷,直至鏈表的尾部,統計出鏈表結點的個數 第二步:根據鏈表結點的個數,計
劍指offer編程-鏈表中倒數第k個結點
描述 節點 thead 註意 功能測試 判斷 tro return 測試用例 題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路: 1.遍歷鏈表得到鏈表的長度l,找到從前往後的第l-k+1個節點。需要遍歷兩遍。 2.遍歷一次即可的方法:兩個指針,第一個指針從頭向尾
劍指offer十四之鏈表中倒數第k個結點
gif img https question pla last 代碼 鏈表 || 一、題目 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 二、思路 兩個指針,先讓第一個指針和第二個指針都指向頭結點,然後再讓第一個指正走(k-1)步,到達第k個節點。然後兩個指針同
【LeetCode & 劍指offer刷題】鏈表題4:22 刪除鏈表中倒數第k個結點(19. Remove Nth Node From End of List)
star urn n+1 valid ffffff 防禦性編程 normal move rgb 【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 19. Remove Nth Node From End of List Given a l
《劍指offer》第二十二題(鏈表中倒數第k個結點)
st3 大於 ndk 輸入 The col printf find cte // 面試題22:鏈表中倒數第k個結點 // 題目:輸入一個鏈表,輸出該鏈表中倒數第k個結點。為了符合大多數人的習慣, // 本題從1開始計數,即鏈表的尾結點是倒數第1個結點。例如一個鏈表有
【劍指Offer】14、鏈表中倒數第k個結點
find null java 計數 slow http 解法 public 輸出 ??題目描述: ??輸入一個鏈表,輸出該鏈表中倒數第k個結點。為了符合習慣,從1開始計數,即鏈表的尾結點是倒數第1個節點。例如,一個鏈表有6個結點,從頭結點開始,它們的值依次是1,2,3,4,
劍指Offer-連結串列中倒數第k個節點
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 題解:先統計連結串列的總節點數,然後求出倒數第k個節點是順序遍歷的第幾個節點。可以採用線性表儲存每一個位置的節點,然後查詢則比較快些,不用再遍歷連結串列。 import java.util.ArrayList; import
劍指offer:連結串列中倒數第k個節點
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 首先想到的是從頭結點開始遍歷到連結串列的末尾,然後往前回溯k個節點,但是回溯? 這種方式只適用於雙向連結串列,對於單向連結串列,是不可行的。 另外,如果我們已知了連結串列的長度,為n,那麼倒數第k個節點,也
[劍指offer]連結串列中倒數第k個節點
思路: 用兩個指標遍歷,先讓快指標出發,當快指標走過k+1個元素時,慢指標開始移動,直到快指標指向null,慢指標指向的節點即為倒數第k個節點。 實現: /* public class ListNode { int val; ListNode
鏈表中倒數第k個結點
space 一起 itl string cstring 倒數第k個節點 head %d urn 題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 #include <iostream> #include <cstdio> #include
牛客(14)鏈表中倒數第k個結點
描述 listnode 題目 spa 一個 color AI sem ack // 題目描述 // 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 public class ListNode { int val; ListN