鏈表問題11——兩個單鏈表相交的系列問題(四):總結

題目

請實現一個函數,如果兩個鏈表相交,請返回相交的第一個節點,如果不相交,返回null即可。鏈表可能有環或無環。


要求

如果鏈表1的長度爲N,鏈表2的長度爲M,時間複雜度達到O(M+N),額外空間複雜度請達到O(1).


思路

綜合前三篇文章,即可。

  1. 判斷是否有環,有則返回入環節點,否則返回null
  2. 判斷兩個無環鏈表是否相交,有則返回第一個交點,否則返回null
  3. 判斷兩個有環鏈表是否相交,有則返回第一個交點,否則返回null

源碼

public class Node{
	public int value;
	public Node next;
	public Node(int data){
		this.value=data;
	} 
}
public Node getIntersectNode(Node head1,Node head2){
	if(head1==null||head2==null){
		return null;
	}
	Node loop1=getLoopNode(head1);
	Node loop2=getLoopNode(head2);

	if(loop1==null&&loop2==null){
		return noLoop(head1,head2);
	}
	if(loop1!=null&&loop2!=null){
		return bothLoop(head1,loop1,head2,loop2);
	}
	return null;
}

 

發佈了57 篇原創文章 · 獲贊 34 · 訪問量 6477
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章