leetcode 141;easy;
定義兩個指標slow和fast,只要slow指標追上每次走兩步的fast指標的話就有環,否則就沒!
package linkedlist;
public
class
main0141環形鍊錶
}class
solution141
slow = slow.next;
fast = fast.next.next;
}return
true;}
}class
solution0141
}return
false;}
}
leetcode 142;medium;
分兩個階段。
第乙個階段:定義slow和fast指標,讓slow指標追上fast指標,說明有環;
第二個階段:讓slow指標重新指向第乙個head結點,然後slow和fast指標相同速度移動,當slow和fast指向同乙個節點時,就是環入口結點。
package linkedlist;
public
class
main0142環形鍊錶ⅱ
}class
solution142}if
(p2.next == null || p2.next.next == null)
p1 = head;
while
(p1 != p2)
return p1;
}}
程式設計師**面試指南(第2版)
這個問題比較有意思,這個題的大致意思:有n個人,圍成乙個環,編號1-n,
指定乙個k值,從編號1開始,每次報數,當喊到k時,這個人就要自殺,下乙個人從1開始,…最後只會剩下乙個幸運兒,幸運兒自己選擇自己的命運!
此題最後求得的就是哪個人會是「幸運兒」!
package linkedlist;
public
class
main環形單鏈表的約瑟夫問題
// 每次都刪除報數為 m 的節點,最後返回乙個節點
public
static listnode josephus1
(listnode head,
int m)
int count =0;
while
(head != last)
else
head = last.next;
}return head;
}// 公式證明直接返回存活的節點
public
static listnode josephuskill2
(listnode head,
int m)
int live =
getlive
(len, m)
;while
(live !=1)
head.next = head;
return head;
}// 利用鍊錶長度和報數數字計算出存活的節點
public
static
intgetlive
(int len,
int m)
}
鍊錶之環形鍊錶
上題目 leetcode 141 簡單 總體思路 雙指標,即通過使用一快一慢不同速度的兩個指標來遍歷鍊錶,如果有環,快的總會與慢的相遇。上 1 class solution 2def has cycle self,head 3 4 type head listnode 5 rtype bool 6 ...
鍊錶 Linked List 之環形鍊錶
josephu 問題為 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m 的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。用乙個不帶頭結點的迴圈鍊錶來處理josephu 問題 先構成乙個有n...
鍊錶 環形鍊錶
環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...