当前位置: 首页 > news >正文

南沙免费网站建设简单的个人主页网站制作

南沙免费网站建设,简单的个人主页网站制作,安全员考试报名官网,怎么申请百度网盘免费空间相交链表 题解1 快慢双指针改进 (acb bca)题解2 哈希表(偷懒) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 题目数据 保证 整个链式结构中不存在环。 注意&#xff…

相交链表

    • 题解1 快慢双指针
    • 改进 (a+c+b = b+c+a)
    • 题解2 哈希表(偷懒)

给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null

在这里插入图片描述
题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提示:

  • listA 中节点数目为 m
  • listB 中节点数目为 n
  • 1 <= m, n <= 3 ∗ 1 0 4 3 * 10^4 3104
  • 1 <= Node.val <= 1 0 5 10^5 105
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • 如果 listA 和 listB没有交点,intersectVal 为 0
  • 如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB]

进阶:你能否设计一个时间复杂度 O(m + n) 、仅用 O(1) 内存的解决方案?
(两个链表各遍历一次,空间不随元素个数变化)

题解1 快慢双指针

/*** 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) {ListNode* tmpA = headA;ListNode* tmpB = headB;int Alen = 0;int Blen = 0;while(tmpA){Alen ++;tmpA = tmpA->next;}while(tmpB){Blen ++;tmpB = tmpB->next;}ListNode* fastNode = Alen >= Blen ? headA : headB;ListNode* slowNode = Alen < Blen ? headA : headB;int diff = abs(Blen - Alen);while(diff--)fastNode = fastNode->next;while(fastNode){if(fastNode == slowNode)return fastNode;else{fastNode = fastNode->next;slowNode = slowNode->next;}}return NULL;}
};

在这里插入图片描述

改进 (a+c+b = b+c+a)

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* tmpA = headA;ListNode* tmpB = headB;// 假设相交 设相交前A长a B长b// 设C点相交 设从C点到list尾结点长c// a+c+b = b+c+a 如果相交 则遍历这么多元素后 会回到C点// 操作上:tmpA指到尾 改指tmpBwhile(tmpA != tmpB){tmpA = tmpA == nullptr ? headB : tmpA -> next;tmpB = tmpB == nullptr ? headA : tmpB -> next;}return tmpA;}
};

题解2 哈希表(偷懒)

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {unordered_set <ListNode*> kkmap;ListNode * tmp = headA;while(tmp){kkmap.insert(tmp);tmp = tmp->next;}tmp = headB;while(tmp){if(kkmap.count(tmp)) return tmp;tmp = tmp->next;}return nullptr;}
};

在这里插入图片描述

http://www.yayakq.cn/news/367083/

相关文章:

  • 手机网站和微信网站的区别云南红舰工贸有限公司的网站建设
  • 备案网站管理系统观察者网wordpress
  • 青岛知名网站建设公司广告设计怎么做
  • 推销别人做网站有什么作用wordpress腾讯地图插件
  • 制作好的网页模板如何放入网站cms中沈阳制作网站的公司有哪些
  • 可以做编程题的网站pc 网站建设
  • 梅州建站公司网站开发文本模版
  • 学生如何自己做网站wordpress4.3 漏洞
  • 建站系统主要包括什么企业门户平台设计方案
  • 网站外链作用网站排名优化策划
  • 什么是网站域名整合营销公司
  • 网站备案 需要上传网站么广东湛江网站建设
  • 小白学网站建设与设计书wordpress 世界时间
  • 中山专业网站建设公司ftp上传网站之后怎么做
  • 网站短信通知网站开发要用哪些语言开发
  • 大型网站系统图建设局工作总结
  • 做关于车的网站有哪些百度健康
  • 给客户建设网站税率php网站开发薪资 深圳
  • 广安门内网站建设制作图片的软件app下载
  • 网站设计流程及制作流程医疗行业网站怎么做
  • 坑梓网站建设代理商郑州网站建设彳汉狮网络
  • 青海建设厅网站首页最新网站建设语言
  • wordpress网站后缀学校网站空间建设情况
  • 高端企业网站设计公司免备案国内虚拟主机
  • 地方房地产网站seo实战案例分享找事做网站怎么弄
  • 网站建设 后端开发软件WordPress设置作者信息
  • 旺道网站排名优化静态网页制作案例
  • 广西智能网站建设找哪家wordpress 单栏 宽屏
  • 商丘网站建设免费网络在线打电话
  • 云集网站建设公司网站建设优化服务策划