一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++實現LeetCode(61.旋轉鏈表)

C++實現LeetCode(61.旋轉鏈表)

2021-11-29 15:01Grandyang C/C++

這篇文章主要介紹了C++實現LeetCode(61.旋轉鏈表),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

[LeetCode] 61. Rotate List 旋轉鏈表

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

Example 1:

C++實現LeetCode(61.旋轉鏈表)

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

Example 2:

C++實現LeetCode(61.旋轉鏈表)

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

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

 解法一:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 個節點就到達新鏈表的頭結點前一個點,這時斷開鏈表即可,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
    }
};

到此這篇關于C++實現LeetCode(61.旋轉鏈表)的文章就介紹到這了,更多相關C++實現旋轉鏈表內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/grandyang/p/4355505.html

延伸 · 閱讀

精彩推薦
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
主站蜘蛛池模板: 日韩一区二三区无 | 成年男女免费大片在线观看 | 色天天综合色天天看 | 天天操天天干天天做 | 国产91无毒不卡在线观看 | 美女禁18| 小SAO货叫大声点妓女 | 日日艹| 四虎免费影院在线播放 | 精品亚洲欧美中文字幕在线看 | 无码AV熟妇素人内射V在线 | 国产精品日本一区二区三区在线看 | 车上小婕子系列辣文小说 | 被强迫变性翘秘书 | 亚洲sss综合天堂久久久 | 国产成人性毛片aaww | 欧美日韩国产中文字幕 | 国产久热精品 | 91茄子| 色综合久久中文字幕 | xxx黑人又大粗又长 xxxx性欧美极品另类 | 国产在亚洲线视频观看 | 欧美日韩精品在线观看 | 情乱奶水欲 | 果冻传媒九一制片厂网站 | 欧美日韩视频在线第一区二区三区 | 亚洲成综合人影院在院播放 | 极品蜜桃臀美女啪啪 | 好 舒服 好 粗 好硬免费视频 | 欧美黑人一级片 | 亚洲天堂影院在线观看 | 青草午夜精品视频在线观看 | 特级淫片欧美高清视频蜜桃 | 国产午夜精品久久久久 | 日本h乱淫动漫在线观看 | 欧美日韩国产一区二区三区在线观看 | 免费一级特黄特色大片在线观看 | 国产亚洲综合精品一区二区三区 | 日产免费自线一二区 | 日本人添下面的全过程 | 女人扒开下面让男人桶爽视频 |