File tree Expand file tree Collapse file tree
main/java/com/examplehub/leetcode/easy
test/java/com/examplehub/leetcode/easy Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package com .examplehub .leetcode .easy ;
2+
3+ import com .examplehub .leetcode .ListNode ;
4+ import java .util .HashSet ;
5+ import java .util .Set ;
6+
7+ /** https://leetcode.com/problems/linked-list-cycle/ */
8+ public class LinkedListCycle {
9+ public static boolean solution1 (ListNode head ) {
10+ Set <ListNode > sets = new HashSet <>();
11+ while (head != null ) {
12+ if (!sets .add (head )) {
13+ return true ;
14+ }
15+ head = head .next ;
16+ }
17+ return false ;
18+ }
19+
20+ public static boolean solution2 (ListNode head ) {
21+ if (head == null || head .next == null ) {
22+ return false ;
23+ }
24+ ListNode slow = head ;
25+ ListNode fast = head .next ;
26+ while (slow != fast ) {
27+ if (fast == null || fast .next == null ) {
28+ return false ;
29+ }
30+ slow = slow .next ;
31+ fast = fast .next .next ;
32+ }
33+ return true ;
34+ }
35+ }
Original file line number Diff line number Diff line change 1+ package com .examplehub .leetcode .easy ;
2+
3+ import static org .junit .jupiter .api .Assertions .*;
4+
5+ import com .examplehub .leetcode .ListNode ;
6+ import org .junit .jupiter .api .Test ;
7+
8+ class LinkedListCycleTest {
9+ @ Test
10+ void testSolution1 () {
11+ ListNode head = new ListNode (3 );
12+ ListNode node2 = new ListNode (2 );
13+ ListNode node3 = new ListNode (0 );
14+ ListNode node4 = new ListNode (4 );
15+ head .next = node2 ;
16+ node2 .next = node3 ;
17+ node3 .next = node4 ;
18+ node4 .next = node2 ;
19+ assertTrue (LinkedListCycle .solution1 (head ));
20+
21+ head = new ListNode (1 );
22+ node2 = new ListNode (2 );
23+ head .next = node2 ;
24+ node2 .next = head ;
25+ assertTrue (LinkedListCycle .solution1 (head ));
26+
27+ head = new ListNode (1 );
28+ assertFalse (LinkedListCycle .solution1 (head ));
29+ }
30+
31+ @ Test
32+ void testSolution2 () {
33+ ListNode head = new ListNode (3 );
34+ ListNode node2 = new ListNode (2 );
35+ ListNode node3 = new ListNode (0 );
36+ ListNode node4 = new ListNode (4 );
37+ head .next = node2 ;
38+ node2 .next = node3 ;
39+ node3 .next = node4 ;
40+ node4 .next = node2 ;
41+ assertTrue (LinkedListCycle .solution2 (head ));
42+
43+ head = new ListNode (1 );
44+ node2 = new ListNode (2 );
45+ head .next = node2 ;
46+ node2 .next = head ;
47+ assertTrue (LinkedListCycle .solution2 (head ));
48+
49+ head = new ListNode (1 );
50+ assertFalse (LinkedListCycle .solution2 (head ));
51+ }
52+ }
You can’t perform that action at this time.
0 commit comments