必知C 演算法之鍊錶基本問題

2021-10-02 08:41:19 字數 700 閱讀 9610

​ 給定乙個鍊錶:

​ 1. 判斷鍊錶是否有環。

​ 2. 如果鍊錶有環,請找出環入口。

​ 3. 計算環的大小。

思路:快慢指標

​ 分別定義乙個快指標fast和慢指標slow,快指標一次走兩步,慢指標一次走一步。如果鍊錶沒有環,那麼fast最終會指向nullptr;如果鍊錶有環,那麼快指標和慢指標最終會相遇。所以,如果最終fast == nullptr,那麼判斷鍊錶無環;如果最終fast == slow,且fast != nullptr,那麼鍊錶有環。

llnode * linkedlist::entranceofloop()

if(!fast || !fast->pnext) return nullptr;

fast = phead;

while(fast != slow)

return fast;

}

int linkedlist::sizeofloop()

if(!fast || !fast->pnext) return 0;

int size = 1;

fast = fast->pnext->pnext;

slow = slow->pnext;

while(fast != slow)

return size;

}

C 寫演算法之鍊錶的基本操作

鍊錶 查詢元素的時間複雜度是o n 但是,更新 插入 刪除的時間複雜度都是o 1 對於需要頻繁插入和刪除元素的場景,用鍊錶更為合適。單鏈表實現 using system namespace test01 public class mylinkedlist node temp head for int...

必知C 演算法之大資料相關基本內容

map reduce和hadoop熱門 常見海量處理題目解題關鍵 1.分而治之。通過雜湊函式將大任務分流到機器,或分流成小檔案 2.常用的hashmap或bitmap 難點 通訊,時間和空間的估算。請對10億個ipv4的ip位址進行排序,每個ip只會出現一次 ipv4的ip數量約等於42億 ip 轉...

問題 A 演算法2 8 2 11 鍊錶的基本操作

輸入資料只有一組,第一行有n 1個整數,第乙個整數是這行餘下的整數數目n,後面是n個整數。這一行整數是用來初始化列表的,並且輸入的順序與列表中的順序相反,也就是說如果列表中是1 2 3那麼輸入的順序是3 2 1。第二行有乙個整數m,代表下面還有m行。每行有乙個字串,字串是 get insert de...