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

公司网站怎样维护运营创建网址链接

公司网站怎样维护运营,创建网址链接,网站开发工作分解结构,第一次做网站做后感快慢指针是一种在链表或数组中使用的双指针技巧,通过使用两个指针(快指针(fast)和慢指针(slow))以不同的速度遍历数据结构,从而高效地解决一些特定问题。 链表相关问题: …

        快慢指针是一种在链表或数组中使用的双指针技巧,通过使用两个指针(快指针(fast)和慢指针(slow))以不同的速度遍历数据结构,从而高效地解决一些特定问题。

链表相关问题:

1.链表的中间结点

快指针(fast):每次走两步

慢指针(slow):每次走一步

下面,我们将分别对链表数据个数为奇数和偶数这两种情况展开详细分析。

单数:

在链表数据个数为奇数的情形下,当快指针(fast)行进至链表的最后一个结点时,慢指针(slow)恰好停留在链表的中间结点处。

双数

在链表数据个数为偶数的情况下,当快指针(`fast`)移动到 `NULL` 位置时,慢指针(`slow`)刚好抵达链表两个中间结点中的第二个结点处

那么我们由此看出当快指针(fast)走到最后一个结点,或者时最后一个结点的下一位是得到链表的中间结点

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* middleNode(struct ListNode* head) {struct ListNode* fast,*slow;fast=slow=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}

2.寻找链表中的倒数第K个节点

思路:

我们知道,倒数第 k 个节点与链表最后一个节点之间间隔的节点数为 k - 1。基于此特性,我们可以采用双指针法来解决该问题。

具体操作如下:

首先,对快指针和慢指针进行初始化,让快指针先向前移动 k - 1 步。这样一来,快指针和慢指针之间的距离就恰好为 k - 1 个节点。

随后,在后续的移动过程中,让快指针和慢指针以相同的速度同步向前移动。由于它们始终保持着 k - 1 个节点的距离,那么当快指针移动到链表的最后一个节点时,慢指针所在的位置就是链表的倒数第 k 个节点。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
int kthToLast(struct ListNode* head, int k) {struct ListNode* fast,*slow;fast=slow=head;while(k--){fast=fast->next;}while(fast){slow=slow->next;fast=fast->next;}return slow->val;
}

3.判断链表是否有环

在学术领域,我们通常将其称为Floyd判圈算法,也叫龟兔赛跑算法,不过其核心思想本质上就是快慢指针思想。倘若链表中存在环,那么快指针(fast)和慢指针(slow)必然会在某次循环过程中相遇。这背后的原理是什么呢?

我们通过图来理解一下:

情况一:fast落后slow一步:

在下次移动时fast移动两步,slow移动一步,这是fast和slow相遇,判定此链表有环

fast落后slow两步:

以此类推,当快指针(fast)落后慢指针(slow)三步时,经过一次移动就会回到之前所讨论的情况二;再移动一次,便回到情况一;接着再移动一次,快指针与慢指针就会相遇。由此我们可以推断,无论快指针最初落后慢指针多少步,经过若干次循环(循环次数为二者初始步数差减 1),快指针和慢指针最终都会相遇。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
typedef struct ListNode ListNode;
bool hasCycle(struct ListNode *head) {ListNode* fast = head;ListNode* slow = head;while(slow && fast && fast -> next){fast = fast -> next -> next;slow = slow -> next;if(fast == slow){return true;}}return false;
}

4.寻找环形链表的入环点

这里推荐大家看代码随想录的分享

代码随想录

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode *fast,*slow;fast=slow=head;//找出相遇点while(fast&&fast->next){slow=slow->next;fast=fast->next->next;if(fast==slow){//相交,找环形入口;分别从头部和从交点出发,找到相遇的点就是环形入口struct ListNode* index1=fast;struct ListNode* index2=head;while(index1!=index2){index1=index1->next;index2=index2->next;}return index1;}}return NULL;
}
http://www.dtcms.com/wzjs/101837.html

相关文章:

  • 青少年思想道德建设网站独立站平台选哪个好
  • 企业型网站建设广告资源网
  • 建设网站需要多少时间公司网址怎么制作
  • 聊城做网站的公司效果口碑营销案例ppt
  • 城乡建设部网站第35号令百度关键词优化排名技巧
  • 新网域名注册续费廊坊百度快照优化哪家服务好
  • 响应式网站设计西安企业seo外包服务公司
  • 人工智能在线ai写作网站在线crm软件
  • 企业网站平台如何做网络推广今日军事头条
  • 将自己做的网站发布到网上鸣蝉智能建站
  • 网站可以用视频做背景吗我是seo关键词
  • 网站建设流程图网站优化推广教程
  • seo免费浏览网站seminar是什么意思
  • 网站广告位怎么做东营网站建设制作
  • 文档网站超链接怎么做爱站工具包的主要功能
  • 做网站定制开发的公司哪家好如何进行品牌宣传与推广
  • 介绍一个地方旅游网站怎么做百度提交入口
  • 做物流网站有哪些功能网站优化公司排名
  • 怎么在百度首页做网站2022年seo还值得做吗
  • 变态sf网站网站企业网站建设规划
  • 长沙网站seo源头厂家在线网站seo优化
  • 网络工程师是什么专业长春seo培训
  • 珠海网站建设报价西安网站seo技术厂家
  • 烹饪考试试卷哪个网站可以做制作app平台需要多少钱
  • 英文网站开发百度推广客户端官方下载
  • 新手做哪类网站seo技巧与技术
  • 网页游戏排行榜前十名wangyi智谋网站优化公司
  • 织梦手机网站怎么做百度首页排名优化服务
  • 沙井网站建设网站网络推广优化
  • 网站的盈利点昆明seo网站建设