https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
编写一个程序,找到两个单链表相交的起始节点。
import tree.ListNode;
/**
* @Description: 两条链表,查找相交的点
* 解法:cha = 长链条长度-短链条长度, 长链条前进到cha个节点,同步向前,当节点相同就是相交节点
* @Author: Jaryn
* @Date: 2019/11/14 15:11
*/
public class ListSameNode {
public static ListNode getSame(ListNode node1,ListNode node2) {
int len1 = len(node1);
int len2 = len(node2);
int cha = Math.abs(len1 - len2);
if(len1 > len2) {
for(int i=0; i<cha; i++) {
node1 = node1.getNext();
}
}else {
for(int i=0; i<cha; i++) {
node2 = node2.getNext();
}
}
while(node1.getNext() != null) {
node1 = node1.getNext();
node2 = node2.getNext();
if(node1 == node2) {
return node1;
}
}
return null;
}
public static int len(ListNode node) {
int i = 1;
ListNode fnode = node;
while((fnode = fnode.getNext()) != null) {
i++;
}
return i;
}
public static void main(String[] args) {
ListNode node6 = new ListNode(6,null);
ListNode node5 = new ListNode(5,node6);
ListNode node4 = new ListNode(4,node5);
ListNode node3 = new ListNode(3,node4);
ListNode node2 = new ListNode(2,node3);
ListNode node1 = new ListNode(1,node2);
ListNode node7 = new ListNode(7,node4);
System.out.println(getSame(node1, node7).getVal());
}
}
版权声明:本文为jaryn_fang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。