题目描述
解题思路
详细见专题链表。
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {// ListNode node1 = headA;// ListNode node2 = headB;// int lengthA = 0;// int lengthB = 0;// while (node1 != null) {// node1 = node1.next;// lengthA++;// }// while (node2 != null) {// node2 = node2.next;// lengthB++;// }// node1 = headA;// node2 = headB;// if(lengthB > lengthA) {// // 交换长度// int temp = lengthA;// lengthA = lengthB;// lengthB = temp;// // 交换节点// ListNode tempNode = node2;// node2 = node1;// node1 = tempNode;// }// int gap = lengthA -lengthB;// while(gap-- > 0) {// node1 = node1.next;// }// while(node1 != null) {// if(node1 == node2) return node1;// node1 = node1.next;// node2 = node2.next;// }// return null;ListNode node1 = headA;ListNode node2 = headB;int lengthA = 0;int lengthB = 0;while (node1 != null) {node1 = node1.next;lengthA++;}while (node2 != null) {node2 = node2.next;lengthB++;}// 注意要重新把头节点赋给他node1 = headA;node2 = headB;int num = Math.abs(lengthA - lengthB);if (lengthA > lengthB) {while (num-- > 0) {node1 = node1.next;}} else {while (num-- > 0) {node2 = node2.next;}}while (node1 != null && node2 != null) {if (node1 != node2) {node1 = node1.next;node2 = node2.next;}else {return node1;}}return null;}}
