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

java鏈表的常見簡單面試算法題詳解

 更新時間:2025年01月07日 09:24:07   作者:石以砥焉,以銳為利  
文章總結:本文主要介紹了單鏈表的基本操作,包括頭插法、尾插法、鏈表翻轉、鏈表成環(huán)判斷、成環(huán)位置判斷、成環(huán)長度判斷,以及有序鏈表的合并,通過實例和代碼示例,詳細講解了每種操作的原理和實現(xiàn)方法

java鏈表的常見面試算法題

頭插法、尾插法

頭插法:先待插入指向頭結點的next,后頭結點的next指向待插入。

尾插法:借助尾指針,直接插入

 /**
     * 頭插法
     * @param head
     * @return
     */
    public static Node head_insert(Node head, int t){
        Node node=new Node(t);
        node.setNext(head.getNext());
        head.setNext(node);
        return head;
    }

    /**
     * 尾插法
     * @param head
     * @return
     */
    public static Node tail_insert(Node head,int t){
        Node tail=head;
        Node target=new Node(t);
        while (tail.getNext()!=null){
            tail=tail.getNext();
        }
        tail.setNext(target);
     return head;
    }
}

單鏈表翻轉

力扣:LCR 024. 反轉鏈表

將翻轉前的鏈表記pre,翻轉后的記next(也是head)。結點依次翻轉。

class Solution {
    public ListNode reverseList(ListNode head) {
     ListNode pre=null;ListNode next=null;
     while (head!=null){
         next=head.next;
         head.next=pre;
         pre=head;
         head=next;
     }
     return pre;
    }
}

鏈表成環(huán)判斷

力扣:141. 環(huán)形鏈表

定義兩個指針slow、fast,slow走一步,fast走兩步遍歷鏈表。相遇就有環(huán)

public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode slow=head;
        ListNode fast=head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            if(slow==fast){
              return true;
            }
        }
        return false;

    }
}

鏈表成環(huán)位置判斷

力扣:LCR 022. 環(huán)形鏈表 II

(1)定義一個A指針(指向開始點A)、B指針(指向相遇點B)。以相同速度移動,相遇點就是環(huán)的入口。

public class Solution {
    public ListNode detectCycle(ListNode head) {
        Boolean result=false;
        ListNode slow=head;
        ListNode fast=head;
        while (slow!=null&&fast!=null&&fast.next!=null){
           slow=slow.next;
           fast=fast.next.next;
           if(slow==fast){
               result=true;
               break;
           }
        }
        if(result==false){
         return null;
        }
        slow=head;
        while (slow!=fast){
            slow=slow.next;
            fast=fast.next;
        }
        return slow;
    }
}

(2)為什么慢指針和快指針相遇時一定沒走完一圈?

將環(huán)平鋪展開,假設慢指針走完一圈了,快指針走兩圈的距離。在下圖中看出快指針已經(jīng)超過了慢指針,中途一定有相遇的瞬間。

鏈表成環(huán)長度判斷

在上一題找到環(huán)入口的前提下,再定義一個指針,繞一圈環(huán)并記數(shù)。

有序鏈表的合并

力扣:21. 合并兩個有序鏈表

定義一個pre指針,始終指向已經(jīng)排好序的鏈表尾結點。定義一個虛擬節(jié)點作為pre的初始節(jié)點。

依次遍歷兩個鏈表取出小的那個結點作為pre的下一個結點。

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
     ListNode head=new ListNode(0);
     ListNode pre=head;
     while(list1!=null&&list2!=null){
        if(list1.val<list2.val){
          pre.next=list1;
          pre=list1;
          list1=list1.next;
        }else{
          pre.next=list2;
          pre=list2;
          list2=list2.next;
        }
     }
     if(list1==null){
     pre.next=list2;
     }else{
        pre.next=list1;
     }
     return head.next;
   }
}

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Servlet實現(xiàn)統(tǒng)計頁面訪問次數(shù)功能

    Servlet實現(xiàn)統(tǒng)計頁面訪問次數(shù)功能

    這篇文章主要介紹了Servlet實現(xiàn)統(tǒng)計頁面訪問次數(shù)功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Java項目打包與部署的完全指南(JAR vs WAR)

    Java項目打包與部署的完全指南(JAR vs WAR)

    本文詳細介紹了Java項目的打包與部署流程,涵蓋JAR包與WAR包的區(qū)別、Maven與Gradle打包命令、以及部署JAR與WAR包的具體步驟,無論是SpringBoot項目還是傳統(tǒng)Web應用,都能從中獲得實用指導,需要的朋友可以參考下
    2026-05-05
  • Java利用讀寫的方式實現(xiàn)音頻播放代碼實例

    Java利用讀寫的方式實現(xiàn)音頻播放代碼實例

    這篇文章主要介紹了Java利用讀寫的方式實現(xiàn)音頻播放代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Spring中的AOP操作你了解嗎

    Spring中的AOP操作你了解嗎

    這篇文章主要為大家詳細介紹了Spring中的AOP操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java處理不可見特殊字符要點解析

    Java處理不可見特殊字符要點解析

    這篇文章主要介紹了Java處理不可見特殊字符要點解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • MyBatis如何處理MySQL字段類型date與datetime

    MyBatis如何處理MySQL字段類型date與datetime

    這篇文章主要介紹了MyBatis如何處理MySQL字段類型date與datetime問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • spring boot 的常用注解使用小結

    spring boot 的常用注解使用小結

    這篇文章主要介紹了spring boot 的常用注解使用小結,需要的朋友可以參考下
    2017-05-05
  • Spring Boot 集成 Mybatis Plus 自動填充字段的實例詳解

    Spring Boot 集成 Mybatis Plus 自動填充字段的實例詳解

    這篇文章主要介紹了Spring Boot 集成 Mybatis Plus 自動填充字段,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys)

    Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys)

    這篇文章主要介紹了Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springmvc+ajax+formdata上傳圖片代碼實例

    springmvc+ajax+formdata上傳圖片代碼實例

    這篇文章主要介紹了springmvc+ajax+formdata上傳圖片代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

綦江县| 武山县| 那曲县| 平陆县| 星座| 怀安县| 邮箱| 额济纳旗| 武鸣县| 江永县| 十堰市| 安溪县| 全椒县| 彩票| 巴马| 万州区| 石台县| 定西市| 白朗县| 贵溪市| 佛山市| 莎车县| 甘南县| 马尔康县| 福清市| 莆田市| 武隆县| 阜新| 台前县| 惠州市| 西昌市| 威信县| 大竹县| 杭锦后旗| 宁远县| 新兴县| 安陆市| 溧水县| 光泽县| 离岛区| 孝昌县|