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

LeetCode 熱題 100 | 鏈表(上)

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode 熱題 100 | 鏈表(上)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1? 基礎(chǔ)知識(shí)

1.1? 空指針

1.2? 結(jié)構(gòu)體

1.3? 指針訪問

1.4? 三目運(yùn)算符

2? 160. 相交鏈表

3? 206. 反轉(zhuǎn)鏈表

4? 234. 回文鏈表


菜鳥做題第三周,語言是 C++

1? 基礎(chǔ)知識(shí)

1.1? 空指針

使用 nullptr 來判斷是否為空指針:

if (headA == nullptr)

“NULL 在 C++ 中就是 0,這是因?yàn)樵?C++ 中 void* 類型是不允許隱式轉(zhuǎn)換成其他類型的,所以之前 C++ 中用 0 來代表空指針,但是在重載整型的情況下,會(huì)出現(xiàn)上述的問題。所以,C++11 加入了 nullptr,可以保證在任何情況下都代表空指針,而不會(huì)出現(xiàn)上述的情況,因此,建議以后還是都用 nullptr 替代 NULL 吧,而 NULL 就當(dāng)做 0 使用。”

摘自博客:C++ 中 NULL 和 nullptr 的區(qū)別

1.2? 結(jié)構(gòu)體
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
  • val 和 next 都是結(jié)構(gòu)體 ListNode 中的元素
  • val 表示當(dāng)前鏈表節(jié)點(diǎn)的值
  • next 表示指向下一個(gè)鏈表節(jié)點(diǎn)的指針
  • ListNode(int x) : val(x), next(NULL) {} 是初始化方法
1.3? 指針訪問
ListNode * p;

p->val;  // 訪問值
p->next;  // 訪問下一節(jié)點(diǎn)指針
1.4? 三目運(yùn)算符
pA = pA == nullptr ? headB : pA->next;

其中,“?” 前的是判斷條件,“?” 后的是兩個(gè)選項(xiàng),“:” 前的是條件成立時(shí)選擇的選項(xiàng),“:” 后的是條件不成立時(shí)選擇的選項(xiàng)。這里的 “pA == nullptr” 是判斷條件,“headB” 是 “pA == nullptr” 成立時(shí) “pA” 等于的值,“pA->next” 是 “pA == nullptr” 不成立時(shí) “pA” 等于的值。

三目運(yùn)算符不是為了裝逼用的,真的可以在很多情況下簡化判斷結(jié)構(gòu)。

2? 160. 相交鏈表

媽呀,這是我大一下程算課期末的真題

LeetCode 熱題 100 | 鏈表(上),力扣,leetcode,鏈表

解題思路:

假設(shè)藍(lán)色段的長度為 a,綠色段的長度為 b,黃色段的長度為 c 。定義 pA 和 pB 兩個(gè)指針,pA 遍歷完 a + c 后遍歷 b,pB 遍歷完 b + c 后遍歷 a,判斷:

  • 若 pA 和 pB 相遇且節(jié)點(diǎn)不為空,則表明兩條鏈表相交
  • 若 pA 和 pB 未相遇或節(jié)點(diǎn)為空,則表明兩條鏈表不相交

這種解法用到了一點(diǎn)數(shù)學(xué)思想:

LeetCode 熱題 100 | 鏈表(上),力扣,leetcode,鏈表

即 pA 和 pB 最終都會(huì)到達(dá)同一位置,它們?cè)谠撐恢弥赶虻墓?jié)點(diǎn)是否一致決定了鏈表是否相交。

如有疑問請(qǐng)參考官方題解,它的分情況討論更加詳細(xì)。

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if (headA == nullptr || headB == nullptr) {
            return nullptr;
        }
        ListNode * pA = headA, * pB = headB;
        while (pA != pB) {
            pA = pA == nullptr ? headB : pA->next;
            pB = pB == nullptr ? headA : pB->next;
        }
        return pA;
    }
};

3? 206. 反轉(zhuǎn)鏈表

解題思路:把所有節(jié)點(diǎn)的 next 指針全部反向即可。

思路說明圖:

LeetCode 熱題 100 | 鏈表(上),力扣,leetcode,鏈表

對(duì)于這種反轉(zhuǎn)問題,核心思想就是把已經(jīng)遍歷過的、但還需要用到的位置保存下來。

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode * prev = nullptr;
        ListNode * curr = head;
        while (curr) {
            ListNode * next = curr->next;
            curr->next = prev;
            prev = curr;
            curr = next;
        } 
        return prev;
    }
};

4? 234. 回文鏈表

解題思路:文章來源地址http://www.zghlxwxcb.cn/news/detail-827481.html

  1. 遍歷鏈表,把所有 val 存入一個(gè)數(shù)組中
  2. 遍歷數(shù)組的前半段,判斷里面的 val 是否和后半段的 val 對(duì)稱
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        ListNode * p = head;
        vector<int> vals;
        while (p) {
            vals.push_back(p->val);
            p = p->next;
        }

        for (int i = 0; i < vals.size() / 2 + 1; ++i) {
            if (vals[i] != vals[vals.size() - i - 1]) return false;
        }
        return true;
    }
};

到了這里,關(guān)于LeetCode 熱題 100 | 鏈表(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【LeetCode熱題100】【鏈表】兩兩交換鏈表中的節(jié)點(diǎn)

    題目鏈接:24. 兩兩交換鏈表中的節(jié)點(diǎn) - 力扣(LeetCode) 實(shí)際上是兩個(gè)兩個(gè)一組顛倒順序,可以用k=2使用【LeetCode熱題100】【鏈表】K 個(gè)一組翻轉(zhuǎn)鏈表-CSDN博客 但可以更簡單,就先看兩個(gè),先取第二個(gè)的指針,遞歸顛倒第二個(gè)后面的節(jié)點(diǎn),鏈接到第一個(gè)節(jié)點(diǎn)上,然后把第一個(gè)節(jié)

    2024年04月13日
    瀏覽(28)
  • 【LeetCode熱題100】打卡第33天:環(huán)形鏈表&LRU緩存

    【LeetCode熱題100】打卡第33天:環(huán)形鏈表&LRU緩存

    大家好,我是知識(shí)汲取者,歡迎來到我的LeetCode熱題100刷題專欄! 精選 100 道力扣(LeetCode)上最熱門的題目,適合初識(shí)算法與數(shù)據(jù)結(jié)構(gòu)的新手和想要在短時(shí)間內(nèi)高效提升的人,熟練掌握這 100 道題,你就已經(jīng)具備了在代碼世界通行的基本能力。在此專欄中,我們將會(huì)涵蓋各種

    2024年02月15日
    瀏覽(22)
  • LeetCode 熱題 100(五):54. 螺旋矩陣、234. 回文鏈表、21. 合并兩個(gè)有序鏈表

    LeetCode 熱題 100(五):54. 螺旋矩陣、234. 回文鏈表、21. 合并兩個(gè)有序鏈表

    54.?螺旋矩陣 https://leetcode.cn/problems/spiral-matrix/ 題目要求: ?思路:一定要 先找好邊界 。如下圖 ,上邊界是1234,右邊界是8、12,下邊界是9、10、11,左邊界是5,所以可以確定四個(gè)邊界所包含的值。然后再 循環(huán)一層一層往里進(jìn)入 ,比如添加完上邊界1234后,上邊界就需要+1,

    2024年02月12日
    瀏覽(30)
  • 每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    142. 環(huán)形鏈表 II - 力扣(LeetCode) 用哈希記錄走過的節(jié)點(diǎn)即可 146. LRU 緩存 - 力扣(LeetCode) O ( 1 ) O(1) O ( 1 ) 地查找并修改kv結(jié)構(gòu),用unordered_map即可解決 問題是題目要求:哈希表容量有限,超出容量時(shí),將刪除最久未訪問的kv 那么關(guān)鍵就在于:如何用數(shù)據(jù)結(jié)構(gòu)表示訪問的先后順

    2024年04月16日
    瀏覽(26)
  • LeetCode 熱題 100(四):48. 旋轉(zhuǎn)圖像、240. 搜索二維矩陣 II、234. 回文鏈表

    LeetCode 熱題 100(四):48. 旋轉(zhuǎn)圖像、240. 搜索二維矩陣 II、234. 回文鏈表

    題目要求:就是一個(gè)順時(shí)針的旋轉(zhuǎn)過程。 ?思路:觀察矩陣,得出翻轉(zhuǎn)前第i行的第J個(gè)元素? 等于? 翻轉(zhuǎn)后倒數(shù)第i列的第J個(gè)元素,舉例說明,第1行第2個(gè)元素為“2”,翻轉(zhuǎn)后到了 倒數(shù)第1列的第2個(gè)元素。說白了只需要針對(duì)翻轉(zhuǎn)前的第i行和翻轉(zhuǎn)后的倒數(shù)第i列 代碼: 題目要求

    2024年02月11日
    瀏覽(25)
  • LeetCode 熱題 100(七):105. 從前序與中序遍歷序列構(gòu)造二叉樹、14. 二叉樹展開為鏈表

    105.?從前序與中序遍歷序列構(gòu)造二叉樹 https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 思路:依據(jù)前序遍歷的根左右和中序遍歷的左根右, 且根左長度=左根 代碼: 14.?二叉樹展開為鏈表 https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/ 思路:前序遍歷

    2024年02月10日
    瀏覽(23)
  • 記錄力扣熱題-100——從鏈表中找到刷題感覺

    記錄力扣熱題-100——從鏈表中找到刷題感覺

    獅子此前已經(jīng)很久沒有碰過算法題了,對(duì)于之前好不容易攢起來的題感又沒了…最近準(zhǔn)備面試,又得重新將其撿起來。算法題是一種很奇妙的東西,如果剛開始刷很難找得到感覺,總得一步一步慢慢來,心急吃不到熱豆腐,獅子建議如果剛開始刷題,先從簡單的鏈表題開始刷

    2024年02月12日
    瀏覽(24)
  • 螺旋矩陣 LeetCode熱題100

    給你一個(gè) m 行 n 列的矩陣 matrix ,請(qǐng)按照 順時(shí)針螺旋順序 ,返回矩陣中的所有元素。 模擬,朝一個(gè)方向走,走過的點(diǎn)標(biāo)記一下,直到碰到邊界或碰到已經(jīng)走過的路,換個(gè)方向。右-下,下-左,左-上,上-右。直到走完所有點(diǎn)。

    2024年02月14日
    瀏覽(28)
  • LeetCode 熱題100——單調(diào)棧

    LeetCode 熱題100——單調(diào)棧

    ? ??個(gè)人主頁: 日刷百題 系列專欄 : 〖C語言小游戲〗 〖Linux〗 〖數(shù)據(jù)結(jié)構(gòu)〗 ? 〖C語言〗 ?? 歡迎各位 → 點(diǎn)贊 ??+ 收藏 ??+ 留言 ??? ? ? 遞增單調(diào)棧:棧中元素從棧底到棧頂依次增大 遞減單調(diào)棧:棧中元素從棧底到棧頂依次減小 在學(xué)習(xí)完樸素的數(shù)據(jù)結(jié)構(gòu)棧之后,

    2024年02月04日
    瀏覽(30)
  • Leetcode熱題100

    暴力:{i,j}直接返回vectorint 哈希表: map: 紅黑樹 具有自動(dòng)排序的功能,是非嚴(yán)格的二叉搜索樹。map內(nèi)部的所有元素都是有序的,使用中序遍歷可將鍵值按照從小到大遍歷出來。插入的時(shí)間是O(logn),查詢時(shí)間是O(logn)。可以支持所有類型的鍵值對(duì) unordered_map: 哈希表(也叫散列表

    2024年02月14日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包