当前位置: 首页> 文旅> 酒店 > 施工企业在施工过程中发现设计文件和图纸有差错的_网站主页制作教程_百度关键词热搜_代运营一般收费

施工企业在施工过程中发现设计文件和图纸有差错的_网站主页制作教程_百度关键词热搜_代运营一般收费

时间:2025/7/12 13:56:54来源:https://blog.csdn.net/axxy2000/article/details/144631340 浏览次数:0次
施工企业在施工过程中发现设计文件和图纸有差错的_网站主页制作教程_百度关键词热搜_代运营一般收费

思路一:哈希表法

把其中一个链表中的值存入哈希表中,然后在这个构建的哈希表中寻找另一链表中的值

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if (headA == NULL || headB == NULL) {return NULL;}//创建一个哈希表用于存储链表headA中的值unordered_set<ListNode*> copy_headA;//声明一个指针ListNode *p = headA;//将headA中的值存入哈希表中while(p != NULL){copy_headA.insert(p);p = p->next;}//在哈希表中寻找headB的值,找到第一个就说明后续全部重合p = headB;while(p != NULL){auto it = copy_headA.find(p);if(it != copy_headA.end()){return p;}p = p->next;}return NULL;}
};

 看官方题解空值使用的是nullptr,这是相较于NULL更安全的一种空值表示

  • 时间复杂度:O(headA.length+headB.length)
  • 空间复杂度:O(headA.length)

思路二:双指针法

使用两个指针分别指向两个链表的头部,环状检查是否有重合部分

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if(headA == NULL || headB == NULL){return NULL;}ListNode *p = headA;ListNode *q = headB;while(p != q){p = p == NULL ? headB : p->next;q = q == NULL ? headA : q->next;}return p;}
};

当指向headA的指针遍历完headA中的所有节点后指向headB的原因是:

指向headA和headB的指针是同时移动的,如果重合部分之前的移动次数不一样,会导致判断失败,举个例子说明:

A: 1->2->3->8->9

B: 5->6->8->9

其中8是交点:

  • pA走:1->2->3->8->9->5->6->8
  • pB走:5->6->8->9->1->2->3->8
  • 时间复杂度:O(headA.length+headB.length)
  • 空间复杂度:O(1)

关键字:施工企业在施工过程中发现设计文件和图纸有差错的_网站主页制作教程_百度关键词热搜_代运营一般收费

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: