日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

leetcode day5 -- Reorder List Linked List Cycle II

發布時間:2025/3/21 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode day5 -- Reorder List Linked List Cycle II 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、 

Reorder List?

Given a singly linked list?L:?L0→L1→…→Ln-1→Ln,
reorder it to:?L0→Ln→L1→Ln-1→L2→Ln-2→…

You must do this in-place without altering the nodes' values.

For example,
Given?{1,2,3,4}, reorder it to?{1,4,2,3}.

分析:翻轉鏈表是很常見的題目,這種翻轉是第一次見。一開始的想法是雙指針法,頭一個指針,尾一個指針,進行合并,但是鏈表是單向的,尾指針不能前移,此種方法不行。然后想到先找到中間結點,將中間結點后部分鏈表翻轉,再進行兩個鏈表的交叉合并,此種方法可行。

代碼如下:

class Solution { public:void reorderList(ListNode *head) {if(!head){return;}ListNode* midNode = findMidNode(head);ListNode* postListHead = midNode->next;midNode->next = NULL;postListHead = reverseList(postListHead);crossMergeList(head,postListHead);} private:ListNode* findMidNode(ListNode *head){if(!head){return NULL;}ListNode* pNode1 = head;ListNode* pNode2 = head->next;if(!pNode2){return pNode1;}else{pNode2 = pNode2->next;}while(pNode2!=NULL){pNode2 = pNode2->next;if(pNode2!=NULL){pNode2 = pNode2->next;}pNode1 = pNode1->next;}return pNode1;}ListNode* reverseList(ListNode* head){ListNode* preNode = NULL;ListNode* curNode = head;while(curNode!=NULL){ListNode* tempNode = curNode->next;curNode->next = preNode;preNode = curNode;curNode = tempNode;}return preNode;}//將頭指針為head2的鏈表交叉連接在頭指針為head1的后面void crossMergeList(ListNode* head1,ListNode* head2){ListNode* tempNode1 = head1;ListNode* tempNode2 = head2;while(head1!=NULL && head2!=NULL){tempNode1 = head1->next;tempNode2 = head2->next;head1->next = head2;head2->next = tempNode1;head1 = tempNode1;head2 = tempNode2;}} };

2、Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return?null.

Follow up:
Can you solve it without using extra space?

分析:乍看是一個很常見的和鏈表中環有關系的題目,但是細想很難,很容易使用雙指針法判斷鏈表是否有環和環的大小,但是要求環的起始點,卻不好想。參考:

http://blog.csdn.net/sysucph/article/details/15378043,大致思路是:首先利用雙指針法,一個指針一次走一步,一個指針一次走兩步,如果有環,兩個指針會相遇,如果沒有則不會相遇。如果相遇此時,將一個指針置于鏈表頭,另一個指針在相遇點,兩個指針每次都走一步,直到兩個指針相遇,此時結點為環的起點。

至于為什么這樣就是環的起點呢,我簡要證明了一下。

代碼如下:

class Solution { public:ListNode *detectCycle(ListNode *head) {if(!head){return NULL;}ListNode* pNode1 = head;ListNode* pNode2 = head;ListNode* firstMeetNode = NULL;while(pNode2!=NULL){pNode1 = pNode1->next;pNode2 = pNode2->next;if(pNode2 != NULL){pNode2 = pNode2->next;}if(pNode1!=NULL && pNode1 == pNode2) {firstMeetNode = pNode2;break;}}if(!firstMeetNode){return NULL;}else{pNode1 = head;while(pNode1 != pNode2){pNode2 = pNode2->next;pNode1 = pNode1->next;}return pNode1;}} };

3、Linked List Cycle?

Given a linked list, determine if it has a cycle in it.

Follow up:Can you solve it without using extra space?

分析:做完上一題這一題就很簡單了,就是要注意兩個指針的初始值和后續判斷問題。

代碼如下:

class Solution { public:bool hasCycle(ListNode *head) {if(!head){return NULL;}ListNode* pNode1 = head;ListNode* pNode2 = head;while(pNode2!=NULL){pNode1 = pNode1->next;pNode2 = pNode2->next;if(pNode2 != NULL){pNode2 = pNode2->next;}if(pNode1 != NULL && pNode1 == pNode2){return true;}}return false;} };

總結

以上是生活随笔為你收集整理的leetcode day5 -- Reorder List Linked List Cycle II的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美a久久 | 日韩国产第一页 | 光棍影院手机版在线观看免费 | 天堂在线日本 | 国产色无码精品视频国产 | 深夜激情网站 | 91免费视频 | 国语对白一区二区三区 | 男生女生插插插 | 黑料视频在线观看 | 亚洲女优在线播放 | 久草青青| 男女扒开双腿猛进入爽爽免费 | 91蝌蚪九色| 天天爽天天爱 | av资源免费看| 无码国产精品一区二区色情男同 | 无码成人精品区一级毛片 | 欧美天天 | 国产亚洲精品久久久久久777 | 亚洲一区二区三区视频在线 | 麻豆av影视| 日日夜夜天天干 | 午夜高清视频 | 成人精品自拍 | 波多野结衣在线一区 | 亚洲免费综合 | 亚洲午夜久久久久久久久久久 | 91九色网| 蜜桃9999| 亚洲系列 | 污污网站免费在线观看 | 亚洲码在线观看 | 国产精品无码自拍 | 亚洲成a人片77777精品 | 中文字幕一区二区三区人妻不卡 | 天天看夜夜爽 | 肉肉av福利一精品导航 | 极品少妇在线 | 国产日韩亚洲欧美 | 久久午夜免费视频 | 爱操影院 | 国精产品一区一区三区在线 | 亚洲呦呦| 99热思思| 白丝久久 | 视频国产一区 | 性欧美久久久 | 男女黄网站 | 99热在线观看免费精品 | 男生和女生靠逼视频 | 久久久精品免费观看 | 亚洲色图二区 | 夜色综合| 九一国产精品 | 最新av电影网站 | 欧美激情aaa | 五月激情久久 | 黄a毛片| 久久一级免费视频 | 日韩久久一区二区三区 | 国产精品久久毛片av大全日韩 | 男女拍拍拍 | 日韩精品伦理 | 天天干 夜夜操 | 国产毛片毛片毛片毛片毛片毛片 | 青青草免费公开视频 | 二区三区偷拍浴室洗澡视频 | 久久久精品小视频 | 超碰97在线看 | 久久久久国产精品熟女影院 | 一本色道久久88亚洲精品综合 | а√天堂8资源中文在线 | 调教女m荡骚贱淫故事 | 亚洲欧美乱日韩乱国产 | 丰满岳乱妇一区二区 | aaa特级毛片| 亚洲最大成人综合网 | 欧美又大粗又爽又黄大片视频 | 免费毛片软件 | 欧美性受xxx黑人xyx性爽 | 91视频在线观看网站 | 国产精品情侣呻吟对白视频 | 91性高潮久久久久久久 | 波多野结衣高清在线 | 岛国av不卡| 日本乱子伦 | 91亚洲成人 | 高中男男gay互囗交观看 | 亚洲激情免费视频 | 亚洲一区二区自拍 | 日产电影一区二区三区 | 性淫影院 | 欧美老女人性生活视频 | 美女av片| 成人香蕉网 | 性欧美成人播放77777 | 精品久久人妻av中文字幕 | av福利院|