/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool hasCycle(ListNode *head) {
unordered_map <int,int> m;
while(head)
{
m[head->val]++;
if(m[head->val] > 1) return true;
head = head->next;
}
return false;
}
};
為啥會報錯呀,我把map的key型別改為了ListNode*就可以通過了
uj5u.com熱心網友回復:
給定一個鏈表,判斷鏈表中是否有環。如果鏈表中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鏈表中存在環。 為了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。注意:pos 不作為引數進行傳遞,僅僅是為了標識鏈表的實際情況。
如果鏈表中存在環,則回傳 true 。 否則,回傳 false 。
uj5u.com熱心網友回復:
你再好好想想,為啥ListNode*能過?如果鏈表中有兩個節點的val相同,算不算環?顯然不算。因為節點的val相同,并不能說明是同一個節點。比如你有10塊錢,小明也有10塊錢,不能說明你和小明是同一個人。
但是如果鏈表中有兩個節點的地址相同,算不算環?顯然算,因為節點的地址相同,就代表是同一個節點。比如你住記憶體地址1號,小明也住記憶體地址1號,那就能說明你和小明星同一個人(因為同一塊計算機記憶體只能保存同一樣東西,你和小明都保存在同一個塊記憶體,就說明你就是小明)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/99267.html
標籤:C++ 語言
下一篇:新手C++類成員函式定義的疑問
