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

C++實現(xiàn)LeetCode(61.旋轉(zhuǎn)鏈表)

 更新時間:2021年07月16日 10:37:23   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(61.旋轉(zhuǎn)鏈表),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

[LeetCode] 61. Rotate List 旋轉(zhuǎn)鏈表

Given the head of a linked list, rotate the list to the right by k places.

Example 1:

Input: head = [1,2,3,4,5], k = 2
Output: [4,5,1,2,3]

Example 2:

Input: head = [0,1,2], k = 4
Output: [2,0,1]

Constraints:

  • The number of nodes in the list is in the range [0, 500].
  • -100 <= Node.val <= 100
  • 0 <= k <= 2 * 109

這道旋轉(zhuǎn)鏈表的題和之前那道 Rotate Array 很類似,但是比那道要難一些,因為鏈表的值不能通過下表來訪問,只能一個一個的走,博主剛開始拿到這題首先想到的就是用快慢指針來解,快指針先走k步,然后兩個指針一起走,當快指針走到末尾時,慢指針的下一個位置是新的順序的頭結(jié)點,這樣就可以旋轉(zhuǎn)鏈表了,自信滿滿的寫完程序,放到 OJ 上跑,以為能一次通過,結(jié)果跪在了各種特殊情況,首先一個就是當原鏈表為空時,直接返回NULL,還有就是當k大于鏈表長度和k遠遠大于鏈表長度時該如何處理,需要首先遍歷一遍原鏈表得到鏈表長度n,然后k對n取余,這樣k肯定小于n,就可以用上面的算法了,代碼如下:

 解法一:

class Solution {
public:
    ListNode *rotateRight(ListNode *head, int k) {
        if (!head) return NULL;
        int n = 0;
        ListNode *cur = head;
        while (cur) {
            ++n;
            cur = cur->next;
        }
        k %= n;
        ListNode *fast = head, *slow = head;
        for (int i = 0; i < k; ++i) {
            if (fast) fast = fast->next;
        }
        if (!fast) return head;
        while (fast->next) {
            fast = fast->next;
            slow = slow->next;
        }
        fast->next = head;
        fast = slow->next;
        slow->next = NULL;
        return fast;
    }
};

這道題還有一種解法,跟上面的方法類似,但是不用快慢指針,一個指針就夠了,原理是先遍歷整個鏈表獲得鏈表長度n,然后此時把鏈表頭和尾鏈接起來,在往后走 n - k%n 個節(jié)點就到達新鏈表的頭結(jié)點前一個點,這時斷開鏈表即可,代碼如下:

class Solution {
public:
    ListNode *rotateRight(ListNode *head, int k) {
        if (!head) return NULL;
        int n = 1;
        ListNode *cur = head;
        while (cur->next) {
            ++n;
            cur = cur->next;
        }
        cur->next = head;
        int m = n - k % n;
        for (int i = 0; i < m; ++i) {
            cur = cur->next;
        }
        ListNode *newhead = cur->next;
        cur->next = NULL;
        return newhead;
    }
};

到此這篇關(guān)于C++實現(xiàn)LeetCode(61.旋轉(zhuǎn)鏈表)的文章就介紹到這了,更多相關(guān)C++實現(xiàn)旋轉(zhuǎn)鏈表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言例題講解指針與數(shù)組

    C語言例題講解指針與數(shù)組

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-07-07
  • C++聚合體初始化aggregate initialization詳細介紹

    C++聚合體初始化aggregate initialization詳細介紹

    這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法
    2023-02-02
  • 淺析C++可變參數(shù)模板的展開方式

    淺析C++可變參數(shù)模板的展開方式

    可變參數(shù)模板(variadic templates)是C++11新增的強大的特性之一,它對模板參數(shù)進行了高度泛化,能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下
    2022-04-04
  • C++深入講解引用的特點及與指針的區(qū)別

    C++深入講解引用的特點及與指針的區(qū)別

    引用是C++一個很重要的特性,顧名思義是某一個變量或?qū)ο蟮膭e名,對引用的操作與對其所綁定的變量或?qū)ο蟮牟僮魍耆葍r,這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識點,需要的朋友可以參考下
    2022-05-05
  • C++中的const和constexpr詳解

    C++中的const和constexpr詳解

    C++ const 和 constexpr 的區(qū)別呢,constexpr表示這玩意兒在編譯期就可以算出來(前提是為了算出它所依賴的東西也是在編譯期可以算出來的)。而const只保證了運行時不直接被修改(但這個東西仍然可能是個動態(tài)變量)。下面我們來詳細講解下。
    2016-01-01
  • C++實現(xiàn)LeetCode(62.不同的路徑)

    C++實現(xiàn)LeetCode(62.不同的路徑)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(62.不同的路徑),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言實現(xiàn)數(shù)據(jù)結(jié)構(gòu)和雙向鏈表操作

    C語言實現(xiàn)數(shù)據(jù)結(jié)構(gòu)和雙向鏈表操作

    這篇文章主要介紹了C語言實現(xiàn)數(shù)據(jù)結(jié)構(gòu)雙向鏈表操作,需要的朋友可以參考下
    2017-03-03
  • C++實現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串)

    C++實現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c語言中static修飾函數(shù)的方法及代碼

    c語言中static修飾函數(shù)的方法及代碼

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于c語言中static如何修飾函數(shù)的知識點內(nèi)容,有需要朋友們可以跟著學(xué)習下。
    2021-10-10
  • C語言實現(xiàn)掃雷小游戲詳細代碼

    C語言實現(xiàn)掃雷小游戲詳細代碼

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷小游戲的代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

卢氏县| 靖边县| 德钦县| 丹东市| 樟树市| 镇远县| 乌兰县| 巴里| 苍南县| 大埔县| 来安县| 长治县| 循化| 重庆市| 布尔津县| 土默特左旗| 江川县| 平凉市| 府谷县| 岑溪市| 景德镇市| 辽宁省| 荆州市| 祁连县| 瑞昌市| 泽州县| 孟津县| 孝义市| 光泽县| 临泽县| 西宁市| 张北县| 文成县| 涟源市| 阳朔县| 疏勒县| 灵台县| 石柱| 化隆| 龙海市| 西充县|