【LeetCode从零单排】No.160 Intersection of Two Linked Lists
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode从零单排】No.160 Intersection of Two Linked Lists
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2↘c1 → c2 → c3↗ B: b1 → b2 → b3begin to intersect at node c1.
Notes:
- If the two linked lists have no intersection at all, return?null.
- The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
Credits:
Special thanks to?@stellari?for adding this problem and creating all test cases.
題目要求取兩個(gè)鏈表的交點(diǎn),而且時(shí)間復(fù)雜度必須是O(n),所以就不能用嵌套循環(huán)的方法。用了如下方法,先計(jì)算兩個(gè)鏈表的各自長(zhǎng)度,將長(zhǎng)鏈表節(jié)點(diǎn)向下移動(dòng)兩鏈表長(zhǎng)度差,再計(jì)算。
代碼
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/ public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if(headA==null || headB==null) return null;int Aindex_length=getLength(headA);int Bindex_length=getLength(headB);int dis=Math.abs(Aindex_length-Bindex_length);ListNode Aindex=headA;ListNode Bindex=headB;if(Aindex_length>=Bindex_length){for(int i=0;i<dis;i++){Aindex=Aindex.next;} while(Bindex!=null){if(Aindex.val==Bindex.val){return Aindex;}else{Aindex=Aindex.next;Bindex=Bindex.next;}}}Aindex=headA;Bindex=headB;if(Aindex_length<Bindex_length){for(int i=0;i<dis;i++){Bindex=Bindex.next;} while(Aindex!=null){if(Aindex.val==Bindex.val){return Aindex;}else{Aindex=Aindex.next;Bindex=Bindex.next;}}}return null;}public int getLength(ListNode head){ListNode index=head;int length=1;while(index.next!=null){index=index.next;length++;}return length;} }代碼下載:https://github.com/jimenbian/GarvinLeetCode
/********************************
* 本文來(lái)自博客 ?“李博Garvin“
* 轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod
******************************************/
總結(jié)
以上是生活随笔為你收集整理的【LeetCode从零单排】No.160 Intersection of Two Linked Lists的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【LeetCode从零单排】No118P
- 下一篇: 【LeetCode从零单排】No.169