Java-找出兩個單鏈表的首個公用節點

來源:互聯網
上載者:User

標籤:java

單鏈表中的簡單演算法

/** * 得到兩個單鏈表的公用結點 * 先求出兩個鏈表的長度,並求出二者的差值dif,兩個指標分別指向鏈表頭部,讓指向長的鏈表的指標先向鏈表尾部移動dif步。 * 最後一起一步步移動兩個指標,當兩個指標都指向同一個結點時,返回那個結點 * @param list1 * @param list2 * @return */public static ListNode getFirstCommonNode(ListNode list1,ListNode list2){if(list1==null || list2==null){return null;}int length1 = getListLength(list1);int length2 = getListLength(list2);ListNode longList = list2;ListNode shortList = list1;int dif = length2 - length1;if(length1 > length2){longList = list1;shortList = list2;dif = length1 - length2;}while(dif>0){longList = longList.getNext();dif--;}while(longList!=null && shortList!=null && longList!=shortList){longList = longList.getNext();shortList = shortList.getNext();}return longList;}/** * 得到鏈表的長度 * @param list * @return */public static int getListLength(ListNode list){int length = 0;while(list != null){length++;list = list.getNext();}return length;}


Java-找出兩個單鏈表的首個公用節點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.