国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上)

這篇具有很好參考價值的文章主要介紹了【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

歡迎關(guān)注個人主頁:逸狼


創(chuàng)造不易,可以點點贊嗎~

如有錯誤,歡迎指出~



目錄

談?wù)勵^插、頭刪、尾插、頭插的時間復(fù)雜度

反轉(zhuǎn)一個單鏈表?

鏈表的中間結(jié)點

返回倒數(shù)第k個結(jié)點

合并兩個鏈表


談?wù)勵^插、頭刪、尾插、頭插的時間復(fù)雜度

頭插和頭刪的時間復(fù)雜度為O(1),

尾插和尾刪的時間復(fù)雜度為O(n) (因為尾插和尾刪要一個個遍歷完鏈表)

反轉(zhuǎn)一個單鏈表?

OJ鏈接

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

采用頭插法

創(chuàng)建cur指針使得cur=head.next

將head.next置空(作為尾節(jié)點)(注意要判斷head為空的情況,return head,否則會報空指針異常)

  1. 創(chuàng)建curN指針使得curN=cur.next
  2. 讓cur.next=head
  3. head=cur

1~3步是一個循環(huán),進(jìn)入循環(huán)條件是cur!=null(即當(dāng)cur為空時,代表cur已經(jīng)遍歷完鏈表)

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言


class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null){
            return head;
        }
        //正常情況
        ListNode cur=head.next;
        head.next=null;
        while(cur!=null){
            ListNode curN=cur.next;
            cur.next=head;
            head=cur;
            cur=curN;
        }
        return head;
    }
}

鏈表的中間結(jié)點

給定一個帶有頭結(jié)點 head 的非空單鏈表,返回鏈表的中間結(jié)點。如果有兩個中間結(jié)點,則返回第二個中間結(jié) 點。OJ鏈接

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

?快慢指針法

定義一個慢指針slow(每次走一步),一個快指針fast(每次走兩步)

  • 即slow=slow.next
  • fast=fast.next.next

這是一個循環(huán),進(jìn)入循環(huán)的條件為fast!=null&&fast.next!=null(這兩個條件不可以交換,否則當(dāng)fast=null時,先判斷fast.next!=null時,會出現(xiàn)空指針異常)

fast!=null針對的是鏈表長度是數(shù)的情況

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

fast.next!=null針對的是鏈表長度是數(shù)的情況

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

class Solution {
    public ListNode middleNode(ListNode head) {

        ListNode slow=head;
        ListNode fast=head;
        while(fast!=null&&fast.next!=null){
            slow=slow.next;
            fast=fast.next.next;
        }
        return slow;
    }
}

返回倒數(shù)第k個結(jié)點

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

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

?定義兩個節(jié)點fast和slow,先讓fast走k步,再讓fast和slow一起走,當(dāng)fast走完鏈表時,此時slow的位置就是倒數(shù)第k個節(jié)點。(fast和slow之間的距離就是k,當(dāng)fast走到null時,返回slow.val)

?【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

fast先走k步,用count計數(shù),

  • fast=fast.next
  • count++

這是一個循環(huán),條件是count<k(count是從0開始的,所以count<k 就是讓fast走了k 步)

接著讓fast和slow一起走,進(jìn)入循環(huán)條件是fast!=null

  • fast=fast.next
  • slow=slow.next
class Solution {
    public int kthToLast(ListNode head, int k) {
        ListNode fast=head;
        ListNode slow =head;
        int count=0;
        while(count<k){
            fast=fast.next;
            count++;
        }
        while(fast!=null){
            fast=fast.next;
            slow=slow.next;
        }
        return slow.val;
    }
}

合并兩個鏈表

將兩個有序鏈表合并為一個新的有序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節(jié)點組成的。OJ 鏈接

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

定義一個哨兵位節(jié)點newH,遍歷節(jié)點tmp

比較A和B鏈表的值,誰小,就將誰的節(jié)點放入新鏈表中

若A的值小( B同理)

  • tmp.next=headA;
  • headA=headA.next;
  • tmp=tmp.next;

這是一個循環(huán),進(jìn)入循環(huán)條件是headA!=null&&headB!=null(只要有一個鏈表遍歷完了,就跳出循環(huán))

還要判斷A走完,B還有的情況(headA=null),(反之同理)

tmp.next=headB;

【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上),數(shù)據(jù)結(jié)構(gòu),java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-859954.html

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

到了這里,關(guān)于【Java--數(shù)據(jù)結(jié)構(gòu)】鏈表經(jīng)典OJ題詳解(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java 數(shù)據(jù)結(jié)構(gòu)】隊列與OJ題

    【Java 數(shù)據(jù)結(jié)構(gòu)】隊列與OJ題

    籃球哥溫馨提示:編程的同時不要忘記鍛煉哦! 目錄 1、什么是隊列?? 2、初識Queue 2.1 認(rèn)識一下Queue 2.2 簡單使用下Queue 3、模擬實現(xiàn)Queue 3.1 構(gòu)造方法和成員屬性 3.2 offer 方法 3.3 poll 方法 3.4 ?peek 方法 4、隊列相關(guān)的OJ題 4.1?設(shè)計循環(huán)隊列 (來源:LeetCode 難度:中等)?? 4.2?用隊列

    2024年01月22日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)——鏈表OJ題

    數(shù)據(jù)結(jié)構(gòu)——鏈表OJ題

    目錄 ? 1.給你一個鏈表的頭節(jié)點?head?和一個整數(shù)?val?,請你刪除鏈表中所有滿足?Node.val == val?的節(jié)點,并返回?新的頭節(jié)點?。 2.給定一個帶有頭結(jié)點 head 的非空單鏈表,返回鏈表的中間結(jié)點。如果有兩個中間結(jié)點,則返回第二個中間結(jié)點。 3.變形題:找到鏈表中倒數(shù)第k個

    2024年02月21日
    瀏覽(22)
  • 二叉樹經(jīng)典OJ題——【數(shù)據(jù)結(jié)構(gòu)】

    二叉樹經(jīng)典OJ題——【數(shù)據(jù)結(jié)構(gòu)】

    W...Y的主頁 ??? 代碼倉庫分享 ??? 今天我們來進(jìn)行二叉樹的OJ練習(xí),就是利用二叉樹的前序、中序、后續(xù)以及晨序遍歷的特性進(jìn)行OJ訓(xùn)練。話不多說,來看我們的第一道題。 【leetcode 965.單值二叉樹】 OJ鏈接? 如果二叉樹每個節(jié)點都具有相同的值,那么該二叉樹就是 單值 二

    2024年02月07日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧與隊列經(jīng)典oj題

    【數(shù)據(jù)結(jié)構(gòu)】棧與隊列經(jīng)典oj題

    ??write in front?? ??所屬專欄:初階數(shù)據(jù)結(jié)構(gòu) ???博客主頁:睿睿的博客主頁 ???代碼倉庫:??VS2022_C語言倉庫 ??您的點贊、關(guān)注、收藏、評論,是對我最大的激勵和支持?。。?關(guān)注我,關(guān)注我,關(guān)注我 , 你們將會看到更多的優(yōu)質(zhì)內(nèi)容??! ??棧兩種線性表示都能實現(xiàn)

    2024年02月03日
    瀏覽(17)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】鏈表OJ

    【數(shù)據(jù)結(jié)構(gòu)初階】鏈表OJ

    OJ 方案一: 題目解析: 方案二: 題目解析:把原鏈表遍歷一遍,插入新鏈表 OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: OJ 題目解析: 定義快慢指針,使快指針先走與慢指針同步。然后同時走看是否相交 OJ 題目解析: OJ 題目解析:

    2024年02月05日
    瀏覽(94)
  • 【數(shù)據(jù)結(jié)構(gòu)OJ題】環(huán)形鏈表

    【數(shù)據(jù)結(jié)構(gòu)OJ題】環(huán)形鏈表

    原題鏈接:https://leetcode.cn/problems/linked-list-cycle/description/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現(xiàn) 整體思路: 定義 快慢指針fast,slow ,如果 鏈表確實有環(huán) , fast指針一定會在環(huán)內(nèi)追上slow指針。 即慢指針一次走一步,快指針一次走兩步,兩個指針從鏈表起始位置開始運行,

    2024年02月12日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)OJ題】鏈表分割

    【數(shù)據(jù)結(jié)構(gòu)OJ題】鏈表分割

    原題鏈接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId=8tqId=11004rp=2ru=/activity/ojqru=/ta/cracking-the-coding-interview/question-ranking 目錄 1. 題目描述 2. 思路分析 3. 代碼實現(xiàn) 整體思路: 創(chuàng)建兩個鏈表 ,分別存放 小于x的結(jié)點 和 大于等于x的結(jié)點 , 分別進(jìn)行尾插 。 這道題目使

    2024年02月12日
    瀏覽(16)
  • 數(shù)據(jù)結(jié)構(gòu)——圖解鏈表OJ題目

    數(shù)據(jù)結(jié)構(gòu)——圖解鏈表OJ題目

    ? ? ? ? 學(xué)完了單鏈表之后,我們對其基本結(jié)構(gòu)已經(jīng)有了一定的了解,接下來我們通過一些題目強(qiáng)化對鏈表的理解,同時學(xué)習(xí)一些面試筆試題目的新思路以及加強(qiáng)對數(shù)據(jù)結(jié)構(gòu)單鏈表的掌握。? 目錄 題目一.876. 鏈表的中間結(jié)點 - 力扣(LeetCode) 題目二:21. 合并兩個有序鏈表

    2024年02月04日
    瀏覽(20)
  • 【Java數(shù)據(jù)結(jié)構(gòu) -- 隊列:隊列有關(guān)面試oj算法題】

    【Java數(shù)據(jù)結(jié)構(gòu) -- 隊列:隊列有關(guān)面試oj算法題】

    只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作得特殊線性表,隊列是 先進(jìn)先出 ,入隊:進(jìn)行插入操作得一端稱為 隊尾(rear) ,出隊:進(jìn)行刪除操作的一端稱為 隊頭(front) 。隊列Queue是個接口, 底層通過鏈表實現(xiàn)的 。 boolean offer(E e) – 入隊列 E poll() – 出隊

    2024年01月25日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】反轉(zhuǎn)鏈表、鏈表的中間節(jié)點、鏈表的回文結(jié)構(gòu)(單鏈表OJ題)

    【數(shù)據(jù)結(jié)構(gòu)】反轉(zhuǎn)鏈表、鏈表的中間節(jié)點、鏈表的回文結(jié)構(gòu)(單鏈表OJ題)

    正如標(biāo)題所說,本文會圖文詳細(xì)解析三道單鏈表OJ題,分別為: ?反轉(zhuǎn)鏈表 (簡單) ?鏈表的中間節(jié)點 (簡單) ?鏈表的回文結(jié)構(gòu) (較難) 把他們放在一起講的原因是: ?反轉(zhuǎn)鏈表 和 ?鏈表的中間節(jié)點 是 ?鏈表的回文結(jié)構(gòu) 的基礎(chǔ) 為什么這樣說?請往下看: 目錄 1. 反轉(zhuǎn)鏈

    2024年02月13日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包