判斷是否為環形連結串列
給定一個連結串列,判斷連結串列中是否有環。
如果連結串列中有某個節點,可以通過連續跟蹤 next 指標再次到達,則連結串列中存在環。 為了表示給定連結串列中的環,我們使用整數 pos 來表示連結串列尾連線到連結串列中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該連結串列中沒有環。注意:pos 不作為引數進行傳遞,僅僅是為了標識連結串列的實際情況。
如果連結串列中存在環,則返回 true 。 否則,返回 false
package com.loo;
import java.util.Set;
import java.util.LinkedHashSet;
public class LoopPointer {
public static void main(String[] args) {
ListNode head = new ListNode(0);
ListNode l1 = new ListNode(1);
ListNode l2 = new ListNode(2);
ListNode l3 = new ListNode(3);
ListNode l4 = new ListNode(4);
ListNode l5 = new ListNode(5);
ListNode l6 = new ListNode(6);
head.next = l1;
l1.next = l2;
l2.next = l3;
l3.next = l4;
l4.next = l5;
l5.next = l6;
l6.next = l2;
System.out.println(hasLoopPointer(head)); // hash表
System.out.println(slowAndFastLoopPointer(head)); // 快慢指標
}
static class ListNode {
int value;
ListNode next;
public ListNode(int v) {
value = v;
}
}
public static boolean hasLoopPointer(ListNode node) {
Set<ListNode> set = new LinkedHashSet<ListNode>();
while (node!=null) {
if (set.contains(node)) {
return true;
}
set.add(node);
node = node.next;
}
return false;
}
public static boolean slowAndFastLoopPointer(ListNode node) {
if (node==null) {
return false;
}
ListNode s = node;
ListNode f = node.next;
while (f!=null && f.next!=null) {
if (s.equals(f)) {
return true;
}
s = s.next;
f = f.next.next;
}
return false;
}
}
相關文章
- 對一個連結串列判斷是否有環
- 請判斷一個連結串列是否為迴文連結串列。
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 如何判斷連結串列中是否有環並找出環的入口位置
- 判斷單連結串列中是否存在環,並輸出環入口節點。
- 判斷單連結串列是否關於中心對陣
- 環形連結串列
- 判斷迴文連結串列
- 環形連結串列II
- 142. 環形連結串列
- 141. 環形連結串列
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 2024/12/2【連結串列】LeetCode 142 環形連結串列 II 【X】LeetCode
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 牛客網高頻演算法題系列-BM6-判斷連結串列中是否有環演算法
- LeetCode-142-環形連結串列 IILeetCode
- Leetcode-142. 環形連結串列 IILeetCode
- 判斷連結串列是否為迴文結構,空間負責度為O(1),時間複雜度為O(n)時間複雜度
- Python實現環形連結串列詳解Python
- 每日leetcode——142. 環形連結串列 IILeetCode
- 演算法141. 環形連結串列演算法
- 判斷網路是否連線
- python判斷是否為listPython
- 判斷字串是否為空字串
- python 判斷是否為中文Python
- 牛客網高頻演算法題系列-BM13-判斷一個連結串列是否為迴文結構演算法
- PbootCMS整理判斷是否連結賦值各種條件判斷和標籤boot賦值
- 每日演算法隨筆:環形連結串列演算法
- Q22 LeetCode142 環形連結串列LeetCode
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 判斷是否為陣列的 JavaScript 方法總結陣列JavaScript
- Activiti判斷流程是否結束
- java環形連結串列約瑟夫環問題筆記Java筆記
- Delphi Variant 判斷是否為空
- java判斷物件是否為空Java物件
- mysql如何判斷是否為空MySql
- js判斷字串是否為空JS字串
- java判斷字串是否為空Java字串