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

Java 深入分析鏈表面試實例題目

 更新時間:2022年03月23日 08:38:10   作者:K穩(wěn)重  
鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結構,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的,本篇帶你通過兩個實例題目來深入探索

鏈表面試題一

判斷鏈表是否是回文結構。

問題描述:

兄弟們,看圖理解什么是鏈表的回文結構:

回文結構:正著讀12 -> 23 ->34,倒著讀12->23->34

奇數(shù)偶數(shù)都可以:

問題分析:

要判斷是不是回文結構,那么我們就要遍歷鏈表,一個從前往后走,一個從后往前走,對應的val值要相同,那么我們就必須修改鏈表的指向,這里就要用到快慢指針幫我們找到中間的節(jié)點,從中間節(jié)點開始改變指向,指向變更完成之后再開始遍歷。

問題講解:

第一步:為了確保始終能找到我們的鏈表,定義一個head變量一直指向頭節(jié)點。

第二步:定義兩個變量,開始都指向head,通過快慢指針的方法求出中間節(jié)點。

第三步:定義一個cur變量指向中間節(jié)點的后面一個節(jié)點,讓cur變量來修改指向。

第四步:定義一個curNext變量等于cur.Next,防止改變指向后無法找到后面的節(jié)點。

代碼實現(xiàn):

  public boolean chkPalindrome(ListNode head) {
        if(head == null) return false;//判斷一下鏈表是不是空,空的話直接返回false
        ListNode fast = head;//快指針fast,初始等于head
        ListNode slow = head;//慢指針slow,初始等于head
        while(fast != null && fast.next != null){//如果鏈表是奇數(shù),fast.next == null停下,如果鏈表是偶數(shù)fast == null停下
            fast = fast.next.next;//fast走兩步
            slow = slow.next;//slow走一步
 
        }
        ListNode cur = slow.next;//cur等于slow的下一個節(jié)點
        while(cur != null){//cur不為空開始反轉(zhuǎn)
            ListNode curNext = cur.next;//curNext等于cur的下一個節(jié)點
            cur.next = slow;//開始反轉(zhuǎn)
            slow = cur;//反轉(zhuǎn)完了后讓slow等于cur
            cur = curNext;//cur再往后走一步。
        }
        while(head != slow){//判斷是不是回文結構
            if(head.val != slow.val){//不是回文結構
                return false;
            }
            if(head.next == slow){//偶數(shù)鏈表的情況
                return true;
            }
            head = head.next;
            slow = slow.next;
        }
        return true;
    }

鏈表面試題二

輸入兩個鏈表,找出它們的第一個公共結點。

問題描述:

問題分析:

判斷:

1.如果兩個鏈表是相交那么是Y還是X形狀?  Y

2.如果兩個鏈表相交,值val域相同還是next域相同?  next域相同

上圖就是相交的鏈表。 

問題講解:

第一步:先定義兩個字節(jié)變量分別指向兩個鏈表的頭,headA和headB。

第二步:定義兩個變量求出兩條鏈表的差值。

第三步:再定義兩個字節(jié)變量ps和pl分別指向headA和headB。

第四步:讓長的鏈表先走他們的差值步。

第五步:兩個鏈表再一起走。

第六步:當ps=pl的時候就是共同節(jié)點了。

代碼實現(xiàn):

 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headB == null || headA == null) return null;//判斷其中一條鏈表的頭節(jié)點為空就是沒有焦點
        ListNode ps = headA;
        ListNode pl = headB;
        int lenA = 0;
        int lenB = 0;
        while(ps != null){求出ps鏈表的長度
            lenA++;
            ps = ps.next;
        }
        ps = headA;//讓ps重新等于頭節(jié)點
        while(pl != null){求出pl鏈表的長度
            lenB++;
            pl = pl.next;
        }
        pl = headB;//讓pl重新等于頭節(jié)點
        int len = lenA - lenB;
        if(len < 0){//判斷ps長還是pl長
            ps = headB;
            pl = headA;
            len = lenB - lenA;
        }
         while(len != 0)//求兩條鏈表的差值
                ps = ps.next;
                len--;
 
            }
        while(ps != pl){
            
            ps = ps.next;
            pl = pl.next;
        }
        return ps;
    }

到此這篇關于Java 深入分析鏈表面試實例題目的文章就介紹到這了,更多相關Java 鏈表 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java工程師面試題一面二面整理

    Java工程師面試題一面二面整理

    在本篇文章里小編給大家整理的是關于Java 工程師面試題的相關知識點,有需要的可以參考下。
    2019-08-08
  • 使用JavaBean根據(jù)指定條件設置屬性值默認值方式

    使用JavaBean根據(jù)指定條件設置屬性值默認值方式

    這篇文章主要介紹了使用JavaBean根據(jù)指定條件設置屬性值默認值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Nacos下線服務時,下線報錯選舉Leader失敗問題以及解決

    Nacos下線服務時,下線報錯選舉Leader失敗問題以及解決

    這篇文章主要介紹了Nacos下線服務時,下線報錯選舉Leader失敗問題以及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java鏈表(Linked List)基本原理與實現(xiàn)方法入門示例

    Java鏈表(Linked List)基本原理與實現(xiàn)方法入門示例

    這篇文章主要介紹了Java鏈表(Linked List)基本原理與實現(xiàn)方法,結合實例形式分析了Java鏈表(Linked List)的功能、原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • Mybatis查詢時的延遲加載解析

    Mybatis查詢時的延遲加載解析

    這篇文章主要介紹了Mybatis查詢時的延遲加載解析,先從單表查詢,需要時再從關聯(lián)表去關聯(lián)查詢,能大大提高數(shù)據(jù)庫性能,因為查詢單表要比關聯(lián)查詢多張表速度要快,延遲加載分為兩種:深度延時加載,侵入式延遲加載,需要的朋友可以參考下
    2023-10-10
  • Java面向?qū)ο蠛蛢?nèi)存分析圖文詳解

    Java面向?qū)ο蠛蛢?nèi)存分析圖文詳解

    這篇文章主要給大家介紹了關于Java面向?qū)ο蠛蛢?nèi)存分析的相關資料,文章可以讓初學者順利的分析內(nèi)存,更加容易的體會程序執(zhí)行過程中內(nèi)存的變化,需要的朋友可以參考下
    2021-05-05
  • 利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    大家應該都知道Idea社區(qū)版本,默認是不能創(chuàng)建SpringBoot項目的,下面這篇文章主要給大家介紹了關于利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法

    SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法

    這篇文章主要給大家介紹了關于SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法,所謂多數(shù)據(jù)源就是一個Java EE項目中采用了不同數(shù)據(jù)庫實例中的多個庫,或者是同一個數(shù)據(jù)庫實例中的多個不同庫,需要的朋友可以參考下
    2023-11-11
  • 兩種java文件上傳實例講解

    兩種java文件上傳實例講解

    這篇文章主要為大家詳細介紹了兩種java文件上傳實例,一種是附件上傳,另一種是上傳簡歷功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java雜談之如何消除代碼中一大串參數(shù)列表

    Java雜談之如何消除代碼中一大串參數(shù)列表

    參數(shù)列表和字面意思差不多,主要是表示該參數(shù)數(shù)量不是固定的,可能會有一個參數(shù),可能多個,不管多少個參數(shù),都放到一個數(shù)組處理,這種參數(shù)叫可變參數(shù)??勺冮L參數(shù)要放在最后一個參數(shù)位置處理,但是一個函數(shù)里面不能有倆種類型的可變參數(shù)
    2021-10-10

最新評論

孝感市| 万年县| 古丈县| 四子王旗| 稻城县| 乌兰县| 正镶白旗| 巫山县| 贵德县| 九江县| 射阳县| 肇源县| 杭锦后旗| 甘肃省| 松潘县| 稻城县| 沂水县| 宁河县| 江口县| 朝阳市| 阿坝县| 淮安市| 子洲县| 绥棱县| 阿拉善盟| 高州市| 朝阳市| 成武县| 广元市| 富阳市| 黔西县| 绥阳县| 砚山县| 南华县| 收藏| 宁都县| 修文县| 丰宁| 阿鲁科尔沁旗| 东辽县| 前郭尔|