鍊錶之環形鍊錶

2021-09-28 12:18:21 字數 1668 閱讀 2507

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...