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

铜川做网站的公司微信推广软件有哪些

铜川做网站的公司,微信推广软件有哪些,wordpress换域名后进后台,建设银行确认参加面试网站目录 引言 面试题01:返回倒数第k个节点 题目描述: 思路分析: 代码展示: 面试题02:链表的回文结构 题目描述: 描述 思路分析: 代码展示: 面试题03:相交链表 题目描述: 思路分析: 代码展示: 小结: 引言 这次的题均来自力扣和牛客有关链表的经典面试题,代码只会展示…

目录

引言

面试题01:返回倒数第k个节点 

题目描述:

思路分析:

代码展示:

面试题02:链表的回文结构

题目描述:

描述

思路分析:

代码展示:

面试题03:相交链表

题目描述:

思路分析:

代码展示:

小结:


引言

这次的题均来自力扣和牛客有关链表的经典面试题,代码只会展示最优的解法,之前发布过单链表的经典算法--单链表经典算法-CSDN博客,大家可以先看看经典算法,再看这个面试题,会轻松很多,如果觉得这篇博客对你有帮助的话,一定要点赞关注哦!

面试题01:返回倒数第k个节点 

--面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)

题目描述:

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

给定的 k 保证是有效的。 

思路分析:

这道题最快的解题方法为快慢指针,大家可以先去看单链表经典算法-CSDN博客中的链表的中间节点.也就是定义两个指针,快指针先走k步,再让快慢指针同时走,直到快指针为NULL,两个指针之间恒定相差为k步,最后的慢指针即为倒数第k个节点.如下图所示:

代码展示:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/int kthToLast(struct ListNode* head, int k){struct ListNode* fast = head, *slow = head;//快指针先走k步while(k--){fast = fast->next;}//同时走while(fast){fast = fast->next;slow = slow->next;}return slow->val;
}

面试题02:链表的回文结构

--链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

题目描述:

描述

对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。

给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

测试样例:

1->2->2->1
返回:true

思路分析:

这道题主要难在它的空间复杂度要求为O(1),也就是不能在创建新的链表,所以重点从如何判断回文结构入手,我们不难发现,找到链表的中间节点,再将链表另一侧翻转,如果两边相同即为回文结构,如下图所示:

这里就涉及了两个算法,一个是找到链表的中间节点并返回,一个是翻转链表.这两个算法大家可以去看单链表经典算法-CSDN博客,哪里我详细讲解了这两个算法的实现,这里我就不多说了,直接给出代码:

代码展示:

找到链表的中间节点

struct ListNode* middleNode(struct ListNode* head) {//创建快慢指针ListNode*slow = head;ListNode*fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;
}

翻转链表

struct ListNode* reverseList(struct ListNode* head) {//判空if(head == NULL){return head;}//创建三个指针ListNode*n1,*n2,*n3;n1 = NULL,n2=head,n3=n2->next;while(n2){n2->next = n1;n1=n2;n2=n3;//n2没走完时,n3已经为空,要进行判空if(n3)n3 = n3->next;}return n1;
}

完整代码:

class PalindromeList {
public:struct ListNode* reverseList(struct ListNode* head) {//判空if(head == NULL){return head;}//创建三个指针ListNode*n1,*n2,*n3;n1 = NULL,n2=head,n3=n2->next;while(n2){n2->next = n1;n1=n2;n2=n3;//n2没走完时,n3已经为空,要进行判空if(n3)n3 = n3->next;}return n1;
}struct ListNode* middleNode(struct ListNode* head) {//创建快慢指针ListNode*slow = head;ListNode*fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;
}bool chkPalindrome(ListNode* A) {// write code herestruct ListNode* mid = middleNode(A);struct ListNode* rmid = reverseList(mid);while(rmid && A){if(rmid->val != A->val)return false;rmid = rmid->next;A = A->next;}return true;}};

面试题03:相交链表

--160. 相交链表 - 力扣(LeetCode)

题目描述:

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

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

思路分析:

首先题目要求判断两个链表是否相交,若相交返回相交的起始节点,否侧返回NULL,那么第一个问题如何判断两个链表是否相交呢?其实很简单,遍历两个链表,找到两个链表的最后节点,若两个链表的最后节点相等,那么两个链表一定相交.难就难在如何返还相交起始节点的位置,因为两个链表相交之前的链表是不相等的,如果是相等的话,那我们就可以直接遍历,从这个角度出发,我们在之前判断是否相交时,求出两个链表的长度,因为后半段的长度两个链表一直,那么两个链表的长度差即为长链表领先的节点个数,让长链表先走长度差,再让两个链表同时走,这样就能找到起始相交的节点.如下图:

代码展示:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* curA = headA, *curB = headB;int lenA = 0, lenB = 0;while(curA->next){curA = curA->next;++lenA;}while(curB->next){curB = curB->next;++lenB;}//尾节点不相交返回空if(curA != curB) return NULL;int gap = abs(lenA - lenB);struct ListNode* longList = headA, * shortList = headB;if(lenB > lenA){longList = headB;shortList = headA;}while(gap--){longList = longList->next;}while(longList != shortList){longList = longList->next;shortList = shortList->next;}return shortList;
}

小结:

这一个专题我准备分两期进行制作,后一期专门进行链表带环问题的讲解,如果觉得对你有帮助的家人们,记得点赞关注哦!

http://www.mmbaike.com/news/80703.html

相关文章:

  • 2g网站空间多少钱一年网站开发外包
  • 鲜花网网站开发的意义seo搜索引擎推广什么意思
  • 作业不会做网站上找人做靠谱吗软文发布推广平台
  • 济南做网站建设的公司电话关键词三年级
  • springboot做网站线上网络推广怎么做
  • 海口建设厅网站山东网页定制
  • 有没有正规的毕设代做网站软件推广赚佣金渠道
  • 门户网页seo建站公司推荐
  • 湖北网络建设公司网站seo是什么软件
  • 网站代码怎么优化网站优化包括对什么优化
  • 网站开发好做吗seo怎么才能做好
  • 商业网站制作网站seo优化课程
  • 苏州做网站好的百度网页版登录
  • 青海西宁做网站多少钱2022年新闻摘抄简短
  • 有限责任公司破产债务谁负责seo查询 工具
  • 深圳建设交易主页关键词排名优化易下拉霸屏
  • 做心悦腾龙光环的网站是什么小学四年级摘抄新闻
  • 1688采购网官网结构优化设计
  • 珠海网站建设开发免费的外贸网站推广方法
  • 网站建设的方案书营销方式和手段有哪些
  • 做酒的网站名字大全广告电话
  • 网站开发课设全国疫情排行榜
  • 安徽专业网站建设创新深圳百度推广公司
  • 跨境独立站平台如何设计一个网页
  • 宏泰机械网站建设企业seo顾问服务阿亮
  • 中企动力做网站好吗网络推广优化培训
  • 建一个网站一般要多少钱网站策划运营
  • 哈尔滨关键词优化排行苏州搜索引擎排名优化商家
  • wordpress收不到邮箱验证码宁波如何做seo排名优化
  • 做企划的网站seo建站技术