如果兩個單鏈表相交,輸出相交節點
一、實現
package com.mtons.mblog.leetcode;
public class NodeSame {
static class Node{
int data;
Node next;
public Node(int data,Node next){
this.data = data;
this.next = next;
}
}
public static void main(String[] args) {
Node node5 = new Node(5,null);
Node node4 = new Node(4,node5);
Node node3 = new Node(3,node4);
Node node2 = new Node(2,node3);
Node node1 = new Node(1,node2);
Node node6 = new Node(6,node4);
Node result = getSameNode(node1,node6);
System.out.println(result.data);
}
public static Node getSameNode(Node head1,Node head2){
if(head1 == null || head2 == null){
return null;
}
Node head1Temp = head1;
Node head2Temp = head2;
int head1Len = 0;
int head2Len = 0;
while (head1Temp != null){
head1Len++;
head1Temp = head1Temp.next;
}
while (head2Temp != null){
head2Len++;
head2Temp = head2Temp.next;
}
head1Temp = head1;
head2Temp = head2;
Node result = null;
while (head1Len > head2Len){
head1Temp = head1Temp.next;
head1Len--;
}
while (head1Len < head2Len){
head2Temp = head2Temp.next;
head2Len--;
}
while (true){
if(head1Temp == head2Temp){
result = head1Temp;
break;
}
if(head1Temp == null || head2Temp == null){
break;
}
head1Temp = head1Temp.next;
head2Temp = head2Temp.next;
}
return result;
}
}
二、輸出
4