一、题目
二、代码
/**
* 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)
{
int LengthA = 0;
int LengthB = 0;
ListNode MyHead = new ListNode(0);
ListNode ProcessNode = new ListNode(0);
MyHead.next = headA;
ProcessNode = MyHead;
while(ProcessNode.next!=null)
{
LengthA++;
ProcessNode = ProcessNode.next;
}
MyHead.next = headB;
ProcessNode = MyHead;
while(ProcessNode.next!= null)
{
LengthB++;
ProcessNode = ProcessNode.next;
}
if(LengthA<LengthB)
{
System.out.println("交换");
return getIntersectionNode(headB,headA);
}
System.out.println("LengthA " + LengthA);
System.out.println("LengthB " + LengthB);
int Dis = LengthA-LengthB;
while(Dis!=0)
{
headA = headA.next;
Dis--;
}
int temp_length = LengthB;
while(temp_length!=0)
{
if(headA == headB) return headA;
else
{
headA = headA.next;
headB = headB.next;
}
}
return null;
}
}
三、运行结果
四、附录
二刷
/**
* 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)
{
int length_a = 0;
int length_b = 0;
ListNode pro_node = new ListNode(0);
pro_node = headA;
while(pro_node != null)
{
length_a++;
pro_node = pro_node.next;
}
pro_node = headB;
while(pro_node != null)
{
length_b++;
pro_node = pro_node.next;
}
// System.out.println(" length_a " +length_a);
// System.out.println(" length_b " +length_b);
if(length_a<length_b) return getIntersectionNode(headB,headA);
int dif = length_a-length_b;
while(dif!=0)
{
dif--;
headA = headA.next;
}
//此时长度相等
while(headA!=null)
{
if(headA == headB) return headA;
else
{
headA = headA.next;
headB = headB.next;
}
}
return null;
}
}