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

wordpress post 类型seo一键优化

wordpress post 类型,seo一键优化,深圳企业网站制作哪个,天津市建设工程监理公司网站目录 题目要求 手搓两个相交简易链表 代码实现 题目要求 两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点,如果两个链表不存在相交节点,则返回 NULL 手搓两个相交简易链表 代码演示: struct Lis…

目录

题目要求

手搓两个相交简易链表

代码实现 


题目要求

两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点,如果两个链表不存在相交节点,则返回 NULL


手搓两个相交简易链表

代码演示:

struct ListNode* a1 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(a1);
struct ListNode* a2 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(a2);a1->val = 1;
a2->val = 2;a1->next = a2;struct ListNode* b1 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(b1);
struct ListNode* b2 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(b2);
struct ListNode* b3 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(b3);b1->val = 1;
b2->val = 2;
b3->val = 3;b1->next = b2;
b2->next = b3;struct ListNode* c1 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(c1);
struct ListNode* c2 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(c2);
struct ListNode* c3 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(c3);c1->val = 1;
c2->val = 2;
c3->val = 3;a2->next = c1;
b3->next = c1;
c1->next = c2;
c2->next = c3;
c3->next = NULL;

代码实现

代码演示:

struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB)
{// 先找各自链表的尾节点,判断是否相交struct ListNode* tailA = headA;struct ListNode* tailB = headB;int lenA = 1;int lenB = 1;while (tailA->next != NULL){tailA = tailA->next;lenA++;}while (tailB->next != NULL){tailB = tailB->next;lenB++;}if (tailA != tailB)return NULL;// 找相交节点int gap = abs(lenA - lenB);struct ListNode* longList = headA;struct ListNode* shortList = headB;if (lenA < lenB){longList = headB;shortList = headA;}while (gap--){longList = longList->next;}while (longList != shortList){longList = longList->next;shortList = shortList->next;}return longList;
}

代码解析:

代码思路:先判断两个链表是否相交,那么就是看尾节点是否相同,不相同就说明不相交,返回NULL 即可,尾节点相同则表示相交,再将节点长的链表走差距步,然后再同时往后走,找到相同的节点时,就是相交的节点

代码逻辑:两个链表各自往后走,并记录各自节点的个数,先判断尾节点的地址是否相同(注意:不是判断两个节点的数据是否相同),不想同就返回 NULL ,相同就利用 abs 函数求出 lenA 减去 lenB 的绝对值,就是两个链表相差的节点个数,再求出长的链表,先走差距步,再一起往后走,走到地址相同的节点时,就时交点

代码验证:

算法的时间和空间复杂度:

3 个 while 循环执行了 N 次,也就是 3*N(除去 3) ,且没有产生额外的空间

时间复杂度: O(N)

空间复杂度:O(1)

http://www.15wanjia.com/news/4810.html

相关文章:

  • 烟台 做网站的公司免费b站推广网站入口2020
  • 单位网站建设收费标准国外搜索网站排名
  • 西安网络公司网站建设系统优化工具
  • 做期货应关注什么网站网站安全检测平台
  • 电子商务网站建设方案案例最新的全国疫情数据
  • 周口集团网站建设nba最新消息球员交易
  • 盈科互动网站建设制作公司discuz论坛seo设置
  • 这样做自己的网站网站赚钱
  • 网站开发需要配置哪些人员网上的推广公司
  • 云主机配置网站推广专员
  • 申请好域名后 怎么做网站百度地图导航
  • 深圳购物网站产品推广渠道有哪些
  • 电商做网站2021年关键词有哪些
  • 怎么用虚拟主机做网站步骤网站下载免费软件
  • 网站开发华企云商淘宝代运营1个月多少钱
  • 西宁网站制作多少钱seo排名点击器
  • 海外推广方式有哪些重庆网站优化排名推广
  • java做网站开发书百度浏览器下载
  • 合肥网站优化 新浪博客常宁seo外包
  • 做pc端网站包括哪些广告联盟平台
  • 百度小程序制作网站如何提高网站在搜索引擎中的排名
  • 全国做网站排行青岛新闻最新今日头条
  • 上海招聘网站排名什么是互联网营销
  • 做网站的群关键词排名零芯互联排名
  • 公司网站 模板seo顾问服务咨询
  • 厦门建行网站首页百度官网认证价格
  • 网站开发 太原产品推广介绍怎么写
  • 搜索引擎营销是目前最主要的网站推广营销google下载安卓版下载
  • ps网站子页怎么做的百度网盘客服电话24小时
  • 网站页面设计技术参数服务推广软文范例