leetcode Linked List Cycle

Linked List Cycle  题目:https://leetcode.com/problems/linked-list-cycle/

判断一个单链表有没有环,不能使用额外的空间

解题思路:使用快慢指针,一个快指针每次走两格,一个慢指针,每次走一格,如果快慢指针指针指向同一个元素,就说明单链表有环,如果一直没有找到,快指针走到链表的末尾,说明链表没有环。

public static void main(String[] args) {
		ListNode listNode1=new ListNode(1);
		ListNode listNode2=new ListNode(2);
		ListNode listNode3=new ListNode(3);
		ListNode listNode4=new ListNode(4);
		listNode1.next=listNode2;
		listNode2.next=listNode3;
		listNode3.next=listNode4;
		listNode4.next=listNode2;
		boolean flag = hasCycle(listNode1);
		System.out.println(flag);

	}

	public static  boolean hasCycle(ListNode head) {
		ListNode slow=head;
		ListNode fast=head;
		while(fast!=null && fast.next!=null){
			slow=slow.next;
			fast=fast.next.next;
			if(slow==fast){
				return true;
			}
		}
		return false;
	}

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/84836131
今日推荐