劍指offer 37兩個鍊錶的第乙個公共結點

2021-06-22 23:29:42 字數 1013 閱讀 1182

package listtest.listintersection;

/** * 查詢兩個鍊錶的第乙個交點

* 兩個有交點的鍊錶自交點結點開始到最後乙個結點都是相同的。

* 如果能從最後乙個結點遍歷到最後乙個相同的結點則為交點。

* 但是單鏈表只能從頭結點開始遍歷,所以我們要考慮兩個鍊錶的長度是不是一樣的。

* 如果乙個鍊錶比另外乙個鍊錶長,則長鍊表先遍歷差值,然後兩個鍊錶同時遍歷比較。

* 考慮:1、時間複雜度

* 2、魯棒性

* @author summ

* */

public class listtheintersection

while (qnode!=null)

//求差的絕對值

int length = math.abs(countp - countq);

//如果鍊錶長度不同時候比較

if (length > 0)

while (phead!=null)

return phead;

}} else

return phead;}}

} return phead;

}

public static void main(string args) 

}

結點類:

package listtest.listintersection;

/** * 結點類

* @author summ

* */

public class listnode

public string getdata()

public void setdata(string data)

public listnode getnext()

public void setnext(listnode next)

}

劍指offer37題(兩個鍊錶的第乙個公共結點)

題目 輸入兩個鍊錶,找出它們的第乙個公共結點。思路 首先要明白一點 如果兩個單向鍊錶有公共結點,那麼這兩個鍊錶從某一結點開始,它們的next都指向同乙個結點,及公共結點一定出現在鍊錶的 尾部。兩種思路 第一種是將兩個鍊錶的結點放入棧中,我們依次比較棧頂元素,找出公共結點出現的最後乙個元素。第二種是將...

劍指offer 合併兩個鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...

劍指offer 兩個鍊錶的合併

我怕是要丸,鍊錶合併不會寫了!題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,合成後的鍊錶滿足單調遞增。首先遞迴方法 struct listnode listnode reverselist listnode phead first next last return first 非遞迴 ty...