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

2023-07-31 LeetCode每日一題(重排鏈表)

這篇具有很好參考價值的文章主要介紹了2023-07-31 LeetCode每日一題(重排鏈表)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

2023-07-31每日一題

一、題目編號

143. 重排鏈表

二、題目鏈接

點(diǎn)擊跳轉(zhuǎn)到題目位置

三、題目描述

給定一個單鏈表 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)部的值,而是需要實際的進(jìn)行節(jié)點(diǎn)交換。

示例 1:
2023-07-31 LeetCode每日一題(重排鏈表),LeetCode每日一題,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)
示例 2:
2023-07-31 LeetCode每日一題(重排鏈表),LeetCode每日一題,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)
提示:

  • 鏈表的長度范圍為 [1, 5 * 104]
  • 1 <= node.val <= 1000

四、解題代碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
    ListNode* middleNode(ListNode* head){
        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;
        ListNode* fast = dummyHead;
        ListNode* slow = dummyHead;
        while(fast->next != nullptr){
            fast = fast->next;
            slow = slow->next;
            if(fast->next != nullptr){
                fast = fast->next;
            }
        }
    return slow;
    }

    void reverseListNode(ListNode* head1, ListNode* tail){
        ListNode* p = head1->next;
        tail = p;
        while(p != nullptr){
            ListNode* q = p;
            p = p->next;
            if(q == tail){
                tail->next = nullptr;
                continue;
            }
            head1->next = q;
            q->next = tail;
            tail = q;
        }
    }
public:
    void reorderList(ListNode* head) {
        ListNode* mid = middleNode(head);
        reverseListNode(mid, mid->next);
        ListNode* head1 = head;
        ListNode* head2 = mid->next;
      
        while(head1 != nullptr && head2 != nullptr){
            if(head1 == mid){
                head1->next = nullptr;
            }
            ListNode*p = head1;
            head1 = head1->next;
            if(head1 == mid){
                head1->next = nullptr;
            }
            p->next = head2;
            ListNode*q = head2;
            head2 = head2->next;
            q->next = head1;
        }
       
    }
};

五、解題思路

(1) 使用分治的思路來解決問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-624220.html

到了這里,關(guān)于2023-07-31 LeetCode每日一題(重排鏈表)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 2023-07-07 LeetCode每日一題(過橋的時間)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 共有 k 位工人計劃將 n 個箱子從舊倉庫移動到新倉庫。給你兩個整數(shù) n 和 k,以及一個二維整數(shù)數(shù)組 time ,數(shù)組的大小為 k x 4 ,其中 time[i] = [leftToRighti, pickOldi, rightToLefti, putNewi] 。 一條河將兩座倉庫分隔,只能通過一座橋通行。舊倉庫位于河的右岸,新倉

    2024年02月15日
    瀏覽(25)
  • 2023-07-15 LeetCode每日一題(四數(shù)之和)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個由 n 個整數(shù)組成的數(shù)組 nums ,和一個目標(biāo)值 target 。請你找出并返回滿足下述全部條件且 不重復(fù) 的四元組 [nums[a], nums[b], nums[c], nums[d]] (若兩個四元組元素一一對應(yīng),則認(rèn)為兩個四元組重復(fù)): 0 = a, b, c, d n a、b、c 和 d 互不相同 nums[a] + nums[b]

    2024年02月16日
    瀏覽(26)
  • 2023-07-08 LeetCode每日一題(三數(shù)之和)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個整數(shù)數(shù)組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i != j、i != k 且 j != k ,同時還滿足 nums[i] + nums[j] + nums[k] == 0 。請 你返回所有和為 0 且不重復(fù)的三元組。 **注意:**答案中不可以包含重復(fù)的三元組。 提示: 3 = nums.length = 3000 -10 5

    2024年02月13日
    瀏覽(26)
  • 2023-07-28 LeetCode每日一題(并行課程 III)

    2023-07-28 LeetCode每日一題(并行課程 III)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個整數(shù) n ,表示有 n 節(jié)課,課程編號從 1 到 n 。同時給你一個二維整數(shù)數(shù)組 relations ,其中 relations[j] = [prevCourse j , nextCourse j ] ,表示課程 prevCoursej 必須在課程 nextCourse j 之前 完成(先修課的關(guān)系)。同時給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 time ,其

    2024年02月15日
    瀏覽(22)
  • 2023-07-13 LeetCode每日一題(下降路徑最小和)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個 n x n 的 方形 整數(shù)數(shù)組 matrix ,請你找出并返回通過 matrix 的 下降路徑 的 最小和 。 下降路徑 可以從第一行中的任何元素開始,并從每一行中選擇一個元素。在下一行選擇的元素和當(dāng)前行所選元素最多相隔一列(即位于正下方或者沿對角線向左

    2024年02月15日
    瀏覽(24)
  • 2023/07/02_leetcode每日一題_2.兩數(shù)相加

    給你兩個 非空 的鏈表,表示兩個非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點(diǎn)只能存儲 一位 數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。 示例: 輸入:l1 = [9,9,9,9,9,9

    2024年02月11日
    瀏覽(21)
  • 2023/07/01_leetcode每日一題_1. 兩數(shù)之和

    給定一個整數(shù)數(shù)組 nums 和一個整數(shù)目標(biāo)值 target,請你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個 整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,數(shù)組中同一個元素在答案里不能重復(fù)出現(xiàn)。 你可以按任意順序返回答案。 一開始審錯題了,還以

    2024年02月12日
    瀏覽(25)
  • 2023/07/11_leetcode每日一題_16. 最接近的三數(shù)之和

    給你一個長度為 n 的整數(shù)數(shù)組 nums 和 一個目標(biāo)值 target。請你從 nums 中選出三個整數(shù),使它們的和與 target 最接近。 返回這三個數(shù)的和。 假定每組輸入只存在恰好一個解。 和三數(shù)之和那道題一樣,排序加雙指針

    2024年02月15日
    瀏覽(24)
  • 2023-08-12 LeetCode每日一題(合并 K 個升序鏈表)

    2023-08-12 LeetCode每日一題(合并 K 個升序鏈表)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個鏈表數(shù)組,每個鏈表都已經(jīng)按升序排列。 請你將所有鏈表合并到一個升序鏈表中,返回合并后的鏈表。 示例 1: 示例 2: 示例 3:

    2024年02月13日
    瀏覽(25)
  • 2023-08-06 LeetCode每日一題(24. 兩兩交換鏈表中的節(jié)點(diǎn))

    2023-08-06 LeetCode每日一題(24. 兩兩交換鏈表中的節(jié)點(diǎn))

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個鏈表,兩兩交換其中相鄰的節(jié)點(diǎn),并返回交換后鏈表的頭節(jié)點(diǎn)。你必須在不修改節(jié)點(diǎn)內(nèi)部的值的情況下完成本題(即,只能進(jìn)行節(jié)點(diǎn)交換)。 示例1: 示例2: 示例3: 提示: 鏈表中節(jié)點(diǎn)的數(shù)目在范圍 [0, 100] 內(nèi) 0 = Node.val = 100 (1) 使用遞歸解決問題

    2024年02月14日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包