題目:
思路:首先我們必須清楚環形鍊錶的定義,環形鍊錶的定義是最後乙個結點不再指向空,而是前面任意乙個結點,使得鍊錶形成乙個環,對環形鍊錶而言,任何乙個結點都不會指向空。
方法一:
由定義我們很容易想到環形鍊錶就是兩個結點中的next指向同乙個結點。所以我們遍歷鍊錶,將結點的位址存入乙個雜湊表,
(1)如果遍歷過程中結點的next為空,則說明不是環形鍊錶。
(2)如果遍歷過程中,某結點的位址值在雜湊表中已經存在,則說明是環形鍊錶
hashset
set=
newhashset
();while
(head!=null)
return
false
;
方法二:
方法二是比較巧妙的方法,很難想到。
我們假設兩個人在圓形跑道上跑步,如果兩個人乙個跑得快,乙個跑得慢,根據追擊問題,兩個人最終是會相遇的。
同理,我們假設是乙個環形鍊錶,定義兩個指標,乙個走得快乙個走得慢,那麼這兩個指標乙個會相等。
如果兩個指標其中乙個指向空了。說明不是環形鍊錶。
(注意跳出迴圈的條件)
public
boolean
hascycle
(listnode head)
return
false
;}
LeetCode 刻意練習03 移除元素
題目 引數列表給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回值 移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。思路 遍歷陣列,如果遇到不為val的值則將其賦值給陣列第i元素,並且i 否則繼續遍歷...
LeetCode刻意練習28 跳躍遊戲
題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。方法一 回溯法 有一組資料超時。遍歷每個元素,對於每個元素i,先跳最大的步數nums i 到達下乙個元素next。如果能夠跳出這個陣列 nums i i nums...
《刻意練習》5
不管是 還是體育等等領域,該領域中最傑出的人在青少年時期總是經過了漫長的練習才取得了如今的成績。並且投入的時間與取得的成績成正比。1 首先,它需要乙個已經得到合理發展的行業或領域,也就是說,在那一行業或領域之中,最傑出的從業者已達到一定程度的表現水平,使他們與其他剛剛進入該行業或領域的人們明顯地區分...