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...