leetcode-剑指52-OK

address

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    int getlenth(struct ListNode *head){
	    int len = 0;
	    while(head !=NULL){
	    	len++;
	    	head = head->next;
	    }
	    return len;
	}
	int lenA = getlenth(headA);
	int lenB = getlenth(headB);
	if (lenA>lenB){
		int cha = lenA-lenB;
		while(cha>0){
			headA = headA->next;
			cha--;
		}
		lenA = lenB;
	}
	if (lenA<lenB){
		int cha = lenB-lenA;
		while(cha>0){
			headB = headB->next;
			cha--;
		}
		lenB = lenA;
	}
// 至此,两个头已经一样了
	while(headA && (headA !=headB)){
		headB = headB->next;
		headA = headA->next;
	}
	return headA;
}
posted @ 2021-01-22 20:18  RougeBW  阅读(35)  评论(0)    收藏  举报