欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java關(guān)于重排鏈表詳細(xì)解析

 更新時間:2022年01月25日 14:51:16   作者:Fly upward  
在我們平時的代碼過程中,鏈表是我們經(jīng)常遇到的一個數(shù)據(jù)結(jié)構(gòu),面試題中鏈表占很大一部分,可見鏈表操作是非常重要的。本篇文章我們來探究一下如何進(jìn)行重排鏈表

1.題目

給定一個單鏈表 L 的頭節(jié)點(diǎn) head ,單鏈表 L 表示為:

?L0→ L1?→ … → Ln-1?→ Ln? 請將其重新排列后變?yōu)椋?/p>

L0?→?Ln?→?L1?→?Ln-1?→?L2?→?Ln-2?→ …

不能只是單純的改變節(jié)點(diǎn)內(nèi)部的值,而是需要實(shí)際的進(jìn)行節(jié)點(diǎn)交換。

?來源:力扣(LeetCode)

2.解析

將一個鏈表分為兩個子鏈表,然后將其歸并。

我們要先找到鏈表的中間節(jié)點(diǎn),在中間節(jié)點(diǎn)將其斷開

然后反轉(zhuǎn)后半鏈表

再將兩個子鏈表逐個連起來

?將后半鏈表反轉(zhuǎn),獨(dú)立成一個子鏈表。

最后將兩個子鏈表的節(jié)點(diǎn)逐個連接就OK了

3.代碼

class Solution {
    public void reorderList(ListNode head) {
        
        ListNode fast = head;
        ListNode slow = head;
        //找中間節(jié)點(diǎn)
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        //截斷鏈表
        ListNode cur = slow.next;
        slow.next = null;
        //反轉(zhuǎn)后半鏈表
        ListNode node = null;
        while (cur != null) {
            ListNode curNext = cur.next;
            cur.next = node;
            node = cur;
            cur = curNext;
        }
        //合并
        ListNode prev = head;
        ListNode l1 = node;
        while (l1 != null) {
            ListNode next1 = prev.next;
            ListNode next2 = l1.next;
            prev.next = l1;
            l1.next = next1;
            prev = next1;
            l1 = next2;
        }
        
 
    }
}

到此這篇關(guān)于Java關(guān)于重排鏈表詳細(xì)解析的文章就介紹到這了,更多相關(guān)Java 重排鏈表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot增量/瘦身部署jar包的方式

    SpringBoot增量/瘦身部署jar包的方式

    SpringBoot 項(xiàng)目的部署一般采用全量jar 包方式部署相關(guān)項(xiàng)目,如果我們對相關(guān)的Contrller層進(jìn)行相關(guān)業(yè)務(wù)調(diào)整就需要重新編譯全量jar 包太麻煩了,所以本文給大家介紹了使用SpringBoot 的增量/瘦身部署方式,需要的朋友可以參考下
    2024-01-01
  • struts2獲取服務(wù)器臨時目錄的方法

    struts2獲取服務(wù)器臨時目錄的方法

    這篇文章主要為大家詳細(xì)介紹了struts2獲取服務(wù)器臨時目錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 關(guān)于SpringSecurity簡介以及和Shiro的區(qū)別

    關(guān)于SpringSecurity簡介以及和Shiro的區(qū)別

    這篇文章主要介紹了關(guān)于SpringSecurity簡介以及和Shiro的區(qū)別,在Java應(yīng)用安全領(lǐng)域,Spring Security會成為被首先推崇的解決方案,就像我們看到服務(wù)器就會聯(lián)想到Linux一樣順理成章,需要的朋友可以參考下
    2023-07-07
  • 詳解Java豆瓣電影爬蟲——小爬蟲成長記(附源碼)

    詳解Java豆瓣電影爬蟲——小爬蟲成長記(附源碼)

    這篇文章主要介紹了詳解Java豆瓣電影爬蟲——小爬蟲成長記(附源碼) ,具有一定的參考價值,有需要的可以了解一下。
    2016-12-12
  • Java中Set集合轉(zhuǎn)為List集合常見的兩種方式

    Java中Set集合轉(zhuǎn)為List集合常見的兩種方式

    List是Java中比較常用的集合類,指一系列存儲數(shù)據(jù)的接口和類,可以解決復(fù)雜的數(shù)據(jù)存儲問題,這篇文章主要給大家介紹了關(guān)于Java中Set集合轉(zhuǎn)為List集合常見的兩種方式,需要的朋友可以參考下
    2023-12-12
  • Spring解決泛型擦除的思路詳解

    Spring解決泛型擦除的思路詳解

    這篇文章主要介紹了Spring解決泛型擦除的思路,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • SpringBoot入門之集成Druid的方法示例

    SpringBoot入門之集成Druid的方法示例

    這篇文章主要介紹了SpringBoot入門之集成Druid的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • java編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法

    java編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 在?Java?中將Object?轉(zhuǎn)換為?Int的四種方法

    在?Java?中將Object?轉(zhuǎn)換為?Int的四種方法

    這篇文章主要介紹了在Java中如何將?Object?轉(zhuǎn)換為Int,本文研究了在?Java中將Object轉(zhuǎn)換為int的四種不同方法,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門

    Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門

    Netty是一個異步的、基于事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護(hù)、高性能的網(wǎng)絡(luò)服務(wù)器和客戶端,如果你還不了解它的使用,就趕快繼續(xù)往下看吧
    2022-08-08

最新評論