金融机构网站建设费用,园林景观设计公司名称,百度权重9的网站,舟山seo网络优化招聘题目#xff1a; 题目链接
思路一#xff1a; 1.如果最后一个节点相同说明一定有交点。 2.使用两个循环获取一下长度#xff0c;同时可以获取到尾节点。 3。注意初始化lenA和lenB为1#xff0c;判断下一个节点是空是可以保留尾节点的。长度会少一个#xff0c;尾节点没有…题目 题目链接
思路一 1.如果最后一个节点相同说明一定有交点。 2.使用两个循环获取一下长度同时可以获取到尾节点。 3。注意初始化lenA和lenB为1判断下一个节点是空是可以保留尾节点的。长度会少一个尾节点没有进入循环就不会 保留位节点是判断是否链表相交 4.计算长度差的绝对值因为不知道谁大谁小。 5.假设一个长一个短并且定义名称代表长度的新的链表头。 6.判断修正 7.进行长的先走差距步。 8.如果出现最后一个才相交的情况那么循环走到两个链表的节点都走到空才可以结束保证最后一个节点是被判断的。 注意循环遍历不要动参数 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* curAheadA,*curBheadB;struct ListNode* tileAheadA,*tileBheadB;int lenA1,lenB1;while(tileA-next){tileAtileA-next;lenA;}while(tileB-next){tileBtileB-next;lenB;}if(tileA!tileB){//说明没有相交return NULL;}//说明一定相交int gapabs(lenA-lenB);//2.谁比较大就先走差距步//假设struct ListNode* shortlistheadA,*longlistheadB;if(lenBlenA){//修正shortlistheadB;longlistheadA;}//长的先走差距补。while(gap--){longlistlonglist-next;}while(shortlistlonglist){if(shortlistlonglist){return longlist;}else{shortlistshortlist-next;longlistlonglist-next;}}return NULL;
}