C++實(shí)現(xiàn)LeetCode(141.單鏈表中的環(huán))
[LeetCode] 141. Linked List Cycle 單鏈表中的環(huán)
Given a linked list, determine if it has a cycle in it.
To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list.
Example 1:
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the second node.
Example 2:
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the first node.
Example 3:
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
Follow up:
Can you solve it using O(1) (i.e. constant) memory?
這道題是快慢指針的經(jīng)典應(yīng)用。只需要設(shè)兩個(gè)指針,一個(gè)每次走一步的慢指針和一個(gè)每次走兩步的快指針,如果鏈表里有環(huán)的話,兩個(gè)指針最終肯定會(huì)相遇。實(shí)在是太巧妙了,要是我肯定想不出來。代碼如下:
C++ 解法:
class Solution { public: bool hasCycle(ListNode *head) { ListNode *slow = head, *fast = head; while (fast && fast->next) { slow = slow->next; fast = fast->next->next; if (slow == fast) return true; } return false; } };
Java 解法:
public class Solution { public boolean hasCycle(ListNode head) { ListNode slow = head, fast = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) return true; } return false; } }
Github 同步地址:
https://github.com/grandyang/leetcode/issues/141
類似題目:
參考資料:
https://leetcode.com/problems/linked-list-cycle/
https://leetcode.com/problems/linked-list-cycle/discuss/44489/O(1)-Space-Solution
到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(141.單鏈表中的環(huán))的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)單鏈表中的環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux根據(jù)pid獲取進(jìn)程名和獲取進(jìn)程pid(c語言獲取pid)
status文件,第一行的Name即為進(jìn)程名,C程序?qū)崿F(xiàn)根據(jù)PID獲取進(jìn)程名和根據(jù)進(jìn)程名獲取PID,大家參考使用吧2013-12-12C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08c++中new一個(gè)結(jié)構(gòu)體初始化過程
這篇文章主要介紹了c++中new一個(gè)結(jié)構(gòu)體初始化過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08