public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode ap=headA;
ListNode bp=headB;
int lenA=0,lenB=0;//求两个链表长度
while(ap!=null){
ap=ap.next;
lenA++;
}
while(bp!=null){
bp=bp.next;
lenB++;
}
ap=headA;
bp=headB;
int len=0;//用来计算让两个链表长度相同后的长度
//让两个链表长度相同
if(lenA<lenB){
len=lenA;
for(int i=0;i<lenB-lenA;i++){
bp=bp.next;
}
}
else{
len=lenB;
for(int i=0;i<lenA-lenB;i++){
ap=ap.next;
}
}
int count=0;
for(int i=0;i<len;i++){
if(ap==bp){
return ap;
}
else{
ap=ap.next;
bp=bp.next;
}
count++;
}
return null;
}
}
class Solution(object):
def getIntersectionNode(self, headA, headB):
ap=headA
bp=headB
lenA=0
lenB=0
len=0
count=0
while ap:
ap=ap.next
lenA+=1
while bp:
bp=bp.next
lenB+=1
ap=headA
bp=headB
if lenA<lenB:
len=lenA
for i in range(lenB-lenA):
bp=bp.next
else:
len=lenB
for i in range(lenA-lenB):
ap=ap.next
for i in range(len):
if ap==bp:
return ap
else:
ap=ap.next
bp=bp.next
count+=1
return None
其它方法: