一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)

Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)

2021-01-19 10:49lilivian Java教程

這篇文章主要介紹了Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)的相關(guān)內(nèi)容,涉及三種設(shè)計(jì)思路及代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。

問題描述

輸入一個(gè)鏈表,輸出該鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)。(尾結(jié)點(diǎn)是倒數(shù)第一個(gè))

結(jié)點(diǎn)定義如下:

?
1
2
3
4
5
6
7
8
public class ListNode {
  int val;
  ListNode next = null;
 
  ListNode(int val) {
    this.val = val;
  }
}

思路1:

先遍歷鏈表,計(jì)算其長(zhǎng)度length;
然后計(jì)算出倒數(shù)第k個(gè)結(jié)點(diǎn)就是正數(shù)第length - k + 1.
最后再遍歷鏈表,找到所求結(jié)點(diǎn)
時(shí)間復(fù)雜度O(2n),需要遍歷兩次鏈表

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public ListNode FindKthToTail(ListNode head,int k) {
    if(head == null || k <= 0){
      return null;
    }
    //直接遍歷
    ListNode p = head;
    int length = 1;
    while(p.next != null){
      length++;
      p = p.next;
    }
    int index = length - k + 1;
    if(index <= 0){
      return null;
    }
    p = head;
    int num = 1;
    while(p.next != null && num < index){
      num++;
      p = p.next;
    }
    if(num < index){
      return null;
    }else{
      return p;
    }
  }

思路2:

期待只遍歷鏈表一次就能得到。
設(shè)置兩個(gè)指針,一個(gè)初始化指向第一個(gè)結(jié)點(diǎn),第二個(gè)指向第k個(gè)結(jié)點(diǎn)。然后兩個(gè)指針同步向后移動(dòng),當(dāng)?shù)诙€(gè)指向尾結(jié)點(diǎn)時(shí),第一個(gè)指針即指向了倒數(shù)第k個(gè)結(jié)點(diǎn)

代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public ListNode FindKthToTail(ListNode head,int k) {
    if(head == null || k <= 0){
      return null;
    }
    //直接遍歷
    ListNode p = head;
    ListNode q = head;
    for(int i = 0; i < k-1; i++){
      if(q == null){
        return null;
      }
      q = q.next;
    }
    if(q == null){
      return null;
    }
    while(q.next != null){
      p = p.next;
      q = q.next;
    }
    return p;
  }

思路3:

將鏈表反轉(zhuǎn),那么原問題就變?yōu)榍笳龜?shù)第k個(gè)結(jié)點(diǎn)。
然而這改變了原本的鏈表,且并不會(huì)比思路2更高效

鏈表反轉(zhuǎn):參考《Java語言實(shí)現(xiàn)反轉(zhuǎn)鏈表代碼示例

總結(jié)

以上就是本文關(guān)于Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)的全部?jī)?nèi)容,如有不足之處,歡迎留言指出,小編一定及時(shí)更正,給大家更好的閱讀體驗(yàn)和幫助,感謝朋友們對(duì)本站的支持!

原文鏈接:http://blog.csdn.net/lilianforever/article/details/51839755

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠的撞击发泄h | 美女禁18 | 蜜月aⅴ免费一区二区三区 蜜桃影像传媒推广 | 欧美一级特黄刺激大片视频 | aaaaa特级毛片 | 好男人资源大全免费观看 | 久久国产精品高清一区二区三区 | 欧美男男gaygaysxxx | 美女视频91| 四虎网站网址 | 男人疯狂擦进女人下面 | 精品一久久香蕉国产二月 | 男人j放进女人的p免费看视频 | 亚洲精品午夜级久久久久 | 9420高清视频在线观看网百度 | 午夜AV内射一区二区三区红桃视 | 经典千人斩一区二区视频 | 亚洲天堂免费看 | 免费看黄色片网站 | tube69中国露脸 | 午夜人妻理论片天堂影院 | 亚洲国产欧美另类va在线观看 | 国产日韩欧美在线一区二区三区 | 亚洲羞羞裸色私人影院 | 久久精品亚洲精品国产欧美 | 欧美x×x| 婷婷天天 | 日韩xx00 | 日本色吧 | 男人疯狂擦进女人下面 | 色戒完整版 | 免费激情小视频 | 久久久久久久久女黄9999 | 天天舔天天射 | 亚洲欧美一级夜夜爽w | 四虎成人影院网址 | 500第一精品 | chinese456老人gay| 99精品视频免费在线观看 | 手机在线观看精品国产片 | 91视频www |