1. 程式人生 > >32、環形連結串列

32、環形連結串列

給定一個連結串列,判斷連結串列中是否有環。

進階:
你能否不使用額外空間解決此題?
思路;使用快慢指標的方式來解決,首先定義一個慢的head1,之後定義一個快的head2,如果有環那麼快慢的node一定會相等
我的程式碼

	  public static boolean hasCycle(ListNode head) {
	       ListNode head1 = head;
			ListNode head2 = head;
			while (head1 != null && head2.next != null) {
				head1 = head1.next;
				head2 = head2.next.next;
				if(head1 == head2){
					return true;
				}
	            if(head2 == null){           //這裡一定要加上空list,因為可能會出現空指標異常,這個bug除錯了很久
	                return false;
	            }
			}
			return false;
	    }

在這裡插入圖片描述