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

品牌网站建设内容框架食品建设网站

品牌网站建设内容框架,食品建设网站,太原网站优化推广,门户网站模板图片👑个人主页:啊Q闻 🎇收录专栏:《数据结构》 🎉前路漫漫亦灿灿 前言 今日的习题是关于链表的,分别是链表的回文结构和相交链表的判断。 链表的回文结构 题目为:链表的回文结…

 👑个人主页:啊Q闻       

🎇收录专栏:《数据结构》           

 🎉前路漫漫亦灿灿

前言 

今日的习题是关于链表的,分别是链表的回文结构和相交链表的判断。

链表的回文结构 

题目为:链表的回文结构_牛客题霸_牛客网

这道题目没有C语言的运行环境,我们可以用C++,C++兼容C

思路为: 

 我们实现判断是否为回文结构,要先找到中间节点,然后将中间节点开始的后部分逆置,所以我们要调用前面学习过的寻找中间节点和反转链表的函数【数据结构】链表习题之链表的中间节点和合并两个有序链表-CSDN博客

【数据结构】链表习题之反转链表和删除链表中等于给定值 val 的所有节点-CSDN博客

然后比较后半部分和前半部分,判断是否相同。

代码实现:

struct ListNode*reverse(struct ListNode*head)//反转链表
{if(head==NULL){return head;}struct ListNode*n1,*n2,*n3;n1=NULL;n2=head;n3=head->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3){n3=n3->next;}}return n1;
}
struct ListNode*middleNode(struct ListNode*head)//寻找中间节点
{struct ListNode*slow,*fast;slow=fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}
class PalindromeList {
public:bool chkPalindrome(ListNode* A) {struct ListNode*mid=middleNode(A);//将节点后部分逆置struct ListNode*rmid=reverse(mid);while(A&&rmid)//比较两部分,当有一个为空时,循环结束{if(A->val!=rmid->val){return false;}A=A->next;rmid=rmid->next;}return true;}
};

相交链表 

题目为:. - 力扣(LeetCode)

思路为:

注意:我们比较的是节点的指针,而不是节点的值,因为节点不相交的时候,其节点的值也有可能相等。 

我们可以先找A和B链表的尾节点,如果尾节点相同,则代表这两个链表一定相交,然后我们再求长度差,让长的链表先走长度差,长的链表走完长度差后,A和B两个链表再一起走。


时间复杂度分析:我们利用这种方法,其时间的复杂度为:遍历A链表为N,遍历B链表为N,然后减去长度差后再一起遍历为N,N+N+N=3N,即O(N)。


在这个代码的实现过程中,我们会用到假设法,来简化长短链表的判断,是一个很实用的方法。

代码实现:

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode*curA=headA;struct ListNode*curB=headB;int lenA=0;int lenB=0;while(curA->next)//A和B链表遍历找尾节点{++lenA;curA=curA->next;}while(curB->next){++lenB;curB=curB->next;}if(curA!=curB){return NULL;}int gap=abs(lenA-lenB);//abs为绝对值//假设法:假设A为长链表,B为短链表,然后再利用一个判断,不成立就交换struct ListNode*longlist=headA;struct ListNode*shortlist=headB;if(lenA<lenB){longlist=headB;shortlist=headA;}while(gap--)//长链表先走{longlist=longlist->next;}while(longlist!=shortlist)//A和B链表一起走{longlist=longlist->next;shortlist=shortlist->next;}return longlist;//该处返回长短链表均可
}

详解:

假设法:我们用假设法,就可以不用分别去讨论A>B,还是A<B,简化了代码

😃感谢大家阅读,希望对你有帮助😄

如果对你有帮助的话,三连支持一下吧

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

相关文章:

  • 荥阳做网站优化微信公众号h5商城网站开发
  • 网站开发技术文档格式个人网上注册
  • 网站建设包括哪些方面?打开网页链接
  • 单纯做网站的公司ui设计属于视觉传达吗
  • 搬瓦工做网站代理网络游戏服务平台
  • 做游戏模型参考的网站个人电台网站模版
  • 书画网站免费源码温州网站建站模板
  • 网站备案期间临时网页企业网站seo优化怎么做
  • 如何制作纯静态网站企业网站建设论文
  • 如何先做网站再绑定域名江门刚刚发生的事情
  • 网站开发与解决技巧蔡甸seo排名公司
  • phpstudy搭建本地网站物业管理系统有哪些模块
  • 石家庄网站建设设计唐山小程序开发公司
  • 杭州网站建设费用价格美食网站要怎么做
  • 36氪网站是用什么做的网站制作设计哪家公司好
  • 网站建设策划怎么谈南京做微网站
  • 云南建设厅网站执业注册云南网站建设小程序开发
  • 应税服务网站开发开票seo网站建设 厦门
  • 直播间网站开发发光字体制作网站
  • 深圳优化网站公司哪家好福州网站建设培训
  • 购物网站多少钱wordpress+站群软件
  • 产品展示网站 源码高职院校高水平专业建设网站
  • 石城网站建设上海做什么赚钱快
  • 减肥瘦身网站模板源码拓普建站推广
  • 创恒建设有限公司网站跨境电商平台有哪些知乎
  • 网站建设策划需要涉及桂林阳朔2天游玩攻略
  • 美食网站 原型 html 下载个人网站的设计师
  • 纯静态网站页面优化百度营销登录平台
  • 用pyton可以做网站吗廊坊做网站外包
  • 株洲定制网站建设网站添加百度统计代码吗