成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漫畫:如何找到鏈表的倒數第n個結點?

開發 前端
給定鏈表的頭結點,但并不知道鏈表的實際長度,要求我們找到鏈表的倒數第n個結點。

 

[[347134]]

 

————— 第二天 —————

 

什么意思呢?我們以下面這個鏈表為例:

 

給定鏈表的頭結點,但并不知道鏈表的實際長度,要求我們找到鏈表的倒數第n個結點。

假設n=3,那么要尋找的結點就是元素1:

 

如何利用隊列呢?小灰的思路如下:

1.創建一個長度為n的隊列,遍歷原始鏈表,讓結點逐一進入隊列:

 

2.當隊列已滿時,讓隊尾元素出隊,新結點入隊:

 

3.當鏈表全部結點遍歷完畢時,隊尾的元素就是倒數第n個結點(因為隊列長度是n):

 

————————————

 

首先,我們創建兩個指針P1和P2,P1指向鏈表的頭結點,P2指向鏈表的正數第n個結點(也就是例子中的第3個結點):

 

接下來,我們讓指針P1和P2同時循環右移,每次右移一步,直到指針P2移動到鏈表的末尾:

 

此時,由于P2指向鏈表的尾結點,且P1和P2的距離是n-1,因此P1所指的結點就是我們要尋找的鏈表倒數第n個結點:

 

顯然,這個方法從頭到尾只需要對鏈表做一次遍歷,而且僅僅使用了兩個指針,算法的空間復雜度是O(1)。

 

 

  1. public class NthFromEnd { 
  2.     public static Node findNthFromEnd(Node head, int n){ 
  3.         Node p1 = head; 
  4.         Node p2 = head; 
  5.         //把p2指針移動到正數第n個結點 
  6.         for(int i=1; i<n; i++){ 
  7.             p2 = p2.next
  8.             if(p2 == null){ 
  9.                 throw new IllegalArgumentException("參數n超出鏈表長度!"); 
  10.             } 
  11.         } 
  12.         //p1和p2一起右移,直到p2指向鏈表尾結點 
  13.         while (p2.next != null){ 
  14.             p1 = p1.next
  15.             p2 = p2.next
  16.         } 
  17.         return p1; 
  18.     } 
  19.  
  20.     //快速創建鏈表 
  21.     private static Node buildLinkList(int[] array){ 
  22.         Node head = new Node(array[0]); 
  23.         Node p = head; 
  24.         for(int i=1; i<array.length; i++){ 
  25.             p.next = new Node(array[i]); 
  26.             p = p.next
  27.         } 
  28.         return head; 
  29.     } 
  30.  
  31.     //鏈表節點 
  32.     private static class Node { 
  33.         int data; 
  34.         Node next
  35.  
  36.         Node(int data) { 
  37.             this.data = data; 
  38.         } 
  39.     } 
  40.  
  41.     public static void main(String[] args) { 
  42.         int[] inputs = {5,3,7,2,4,1,9,8}; 
  43.         Node head = buildLinkList(inputs); 
  44.         Node node = findNthFromEnd(head,3); 
  45.         System.out.println("鏈表倒數第3個元素是:" + node.data); 
  46.     } 
  47.  

本文轉載自微信公眾號「程序員小灰」,可以通過以下二維碼關注。轉載本文請聯系程序員小灰公眾號。

 

 

責任編輯:武曉燕 來源: 程序員小灰
相關推薦

2021-08-10 07:57:03

算法鏈表倒數

2022-01-17 09:23:02

LeetCode刪除鏈表算法

2021-04-14 10:19:18

鏈表倒數結點

2021-02-03 13:23:42

鏈表倒數結點

2022-06-01 06:58:41

節點鏈表倒數

2023-04-17 07:33:11

反轉鏈表移除鏈表

2012-06-19 14:23:04

云計算中國

2021-02-04 08:18:53

LeetCode鏈表

2012-02-17 09:45:04

網速手機

2012-02-17 09:43:13

手機網速移動互聯

2010-11-15 10:49:23

求職

2012-08-10 10:53:03

云計算BSA商業軟件聯盟

2012-06-18 10:07:17

云計算實力榜

2014-11-10 09:29:13

Google

2021-08-26 10:07:25

數組前端元素

2021-04-12 15:47:00

數據結構算法鏈表

2022-03-07 11:03:08

大數據檢測谷歌

2011-08-08 10:53:55

寶德PR2510N云計算

2018-03-01 13:32:28

宏碁游戲本PC行業

2021-09-22 22:57:41

手機流量通信
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久亚洲精品 | 黄在线| 日韩欧美国产成人一区二区 | 欧美日韩综合 | 夜夜爽99久久国产综合精品女不卡 | hsck成人网 | 欧美自拍日韩 | 国产69久久精品成人看动漫 | 成人午夜 | 精品一区二区电影 | 免费黄色特级片 | 免费看a | 日韩一区二区三区视频在线播放 | 国产日韩久久 | 国产精品国产三级国产播12软件 | 亚洲欧美在线一区 | 一本一道久久a久久精品综合 | 久久精品视频在线观看 | 久久色视频 | 欧美日韩国产一区二区 | 亚洲一区二区三区视频 | 午夜成人在线视频 | 黄色一级毛片 | www.久久精品 | 91精品国产综合久久久久久漫画 | 国产又色又爽又黄又免费 | 日本电影免费完整观看 | 亚洲天堂av在线 | 国产精品久久久久久久久久久久冷 | 艹逼网 | 中文字幕在线观看视频网站 | 亚洲高清成人在线 | 91精品国产欧美一区二区成人 | va精品 | 国产精品夜夜夜一区二区三区尤 | 日日摸日日添日日躁av | 亚洲97 | 色黄爽| 成人精品国产一区二区4080 | 日韩国产在线 | 99精品久久99久久久久 |