最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java輸出鏈表倒數(shù)第k個節(jié)點

 更新時間:2017年10月16日 10:30:54   作者:lilivian  
這篇文章主要介紹了Java輸出鏈表倒數(shù)第k個節(jié)點的相關(guān)內(nèi)容,涉及三種設(shè)計思路及代碼示例,具有一定參考價值,需要的朋友可以了解下。

問題描述

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

結(jié)點定義如下:

public class ListNode {
  int val;
  ListNode next = null;

  ListNode(int val) {
    this.val = val;
  }
}

思路1:

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

代碼如下:

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è)置兩個指針,一個初始化指向第一個結(jié)點,第二個指向第k個結(jié)點。然后兩個指針同步向后移動,當?shù)诙€指向尾結(jié)點時,第一個指針即指向了倒數(shù)第k個結(jié)點

代碼:

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個結(jié)點。
然而這改變了原本的鏈表,且并不會比思路2更高效

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

總結(jié)

以上就是本文關(guān)于Java輸出鏈表倒數(shù)第k個節(jié)點的全部內(nèi)容,感興趣的朋友可以繼續(xù)參閱:Java編程刪除鏈表中重復的節(jié)點問題解決思路及源碼分享Java編程實現(xiàn)從尾到頭打印鏈表代碼實例以及本站其他相關(guān)專題,如有不足之處,歡迎留言指出,小編一定及時更正,給大家更好的閱讀體驗和幫助,感謝朋友們對本站的支持!

相關(guān)文章

  • 簡述Mybatis增刪改查實例代碼

    簡述Mybatis增刪改查實例代碼

    本文給大家分享編寫一個簡單的mybatis進行插入數(shù)據(jù)的實例代碼,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • 5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項目的實現(xiàn)示例

    5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項目的實現(xiàn)示例

    本文主要介紹了使用IntelliJ?IDEA創(chuàng)建Spring?Boot工程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Java如何將大文件切割成小文件

    Java如何將大文件切割成小文件

    這篇文章主要為大家詳細介紹了Java如何將大文件切割成小文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java利用Hutool-Script封裝JS腳本執(zhí)行

    Java利用Hutool-Script封裝JS腳本執(zhí)行

    在?Java?開發(fā)中,有時需要動態(tài)執(zhí)行腳本代碼,比如?JavaScript?腳本,來實現(xiàn)一些靈活的業(yè)務(wù)邏輯,下面我們就來看看如何利用Hutool-Script模塊對Java的腳本執(zhí)行功能進行封裝吧
    2025-02-02
  • jpanel設(shè)置背景圖片的二個小例子

    jpanel設(shè)置背景圖片的二個小例子

    這篇文章主要介紹了jpanel設(shè)置背景圖片的二個小例子,實現(xiàn)了動態(tài)加載圖片做背景的方法,需要的朋友可以參考下
    2014-03-03
  • Spring Boot2配置Swagger2生成API接口文檔詳情

    Spring Boot2配置Swagger2生成API接口文檔詳情

    這篇文章主要介紹了Spring Boot2配置Swagger2生成API接口文檔詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 從零開始SSM搭建步驟(圖文)

    從零開始SSM搭建步驟(圖文)

    這篇文章主要介紹了從零開始SSM搭建步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 關(guān)于SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題

    關(guān)于SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題

    這篇文章主要介紹了SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Hadoop源碼分析三啟動及腳本剖析

    Hadoop源碼分析三啟動及腳本剖析

    本篇是Hadoop源碼分析系列文章第三篇,主要介紹Hadoop啟動以及腳本的剖析,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • 一文搞懂Java正則表達式的使用

    一文搞懂Java正則表達式的使用

    正則表達式,又稱規(guī)則表達式,是一種文本模式。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規(guī)則的字符串,通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。本文將通過示例為大家詳細說說Java正則表達式的使用,感興趣的可以了解一下
    2022-08-08

最新評論

丰宁| 密山市| 深州市| 台北县| 福州市| 碌曲县| 沭阳县| 平乐县| 安康市| 黎川县| 依安县| 保靖县| 宝应县| 津市市| 石阡县| 福建省| 台安县| 平南县| 绥棱县| 楚雄市| 三门峡市| 南宁市| 永年县| 武宣县| 鹤岗市| 玉树县| 花莲县| 日照市| 吉木萨尔县| 广昌县| 阳城县| 漳浦县| 怀集县| 清新县| 天柱县| 林州市| 曲水县| 桓仁| 潢川县| 德安县| 丰城市|