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

学做网站论坛vip号码开发网站app公司

学做网站论坛vip号码,开发网站app公司,网站维护知识,小程序免费开发1.双指针介绍 双指针是解题时一种常见的思路,一般有两种用法。 1)两个指针反方向,分别从数组开头和结尾开始移动,例如对有序数组的搜索。 2)两个指针同方向移动,例如快慢指针,都是从数组开头…

1.双指针介绍

双指针是解题时一种常见的思路,一般有两种用法。

1)两个指针反方向,分别从数组开头和结尾开始移动,例如对有序数组的搜索。

2)两个指针同方向移动,例如快慢指针,都是从数组开头开始遍历,只是速度不一样。

除了用于数组,也可以用于链表,树,图。

2.反向的双指针

力扣icon-default.png?t=N2N8https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/

因为数组是非递减的,所以可以数组首尾各置一个指针,若值相加大于目标值,则尾指针自减,若值相加小于目标值,则头指针自增,这样就一步步逼近了目标值。

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int i = 0, j = numbers.size()-1;while(i<j){int t = numbers[i] + numbers[j];if(target==t) return vector<int>({i+1,j+1});else if(target>t){i++;}else{j--;}}return vector<int>();}
};

3.同向的双指针

力扣icon-default.png?t=N2N8https://leetcode.cn/problems/linked-list-cycle-ii/这题有两个要点,先是要判断链表中是否有环,接着是找到环的入口。

判断是否有环,可以用快慢指针。

两个指针同时从起点出发,快指针一次两步,慢指针一次一步。

如果链表中有环,则快慢指针一定会相遇,就像在操场上一直跑圈,速度快的人一定会在某一刻比速度慢的人多跑一圈,所以二人相遇了。

若是快慢指针没有相遇,且快指针指向了NULL,那很明显,就是没有环。

确定链表有环后,就是寻找环的入口了。

可以用题目中的示例来简单理解一下。

下图使用快慢指针,从起点[3]出发,慢指针一次一步,快指针一次两步,很快这两个指针会在节点[-4]相遇。

相遇后,将慢指针移回链表起点[3],快慢指针都一次走一步,两个指针再次相遇的节点[2],就是环的入口。

 一个简单易懂的解释就是:

慢指针路径:起点--环的入口--快慢指针相遇的节点

快指针路径:起点--环的入口--快慢指针相遇的节点--环的入口--快慢指针相遇的节点

因为快指针路径==慢指针路径*2

所以【快慢指针相遇的节点--环的入口--快慢指针相遇的节点】== 【 起点--环的入口--快慢指针相遇的节点】

同时减去【环的入口--快慢指针相遇的节点】

所以【快慢指针相遇的节点--环的入口】== 【 起点--环的入口】

所以找到环得到入口就是将慢指针移到起点,与快指针都是一次一步,直到相遇,相遇节点就是环的入口。

如果还是没有理解的,可以直接搜索【Floyd 判圈法】找动画视频直观理解一下。

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {if(!head) return NULL;ListNode* slow = head, *fast = head;while(slow->next && fast->next && fast->next->next){slow = slow->next;fast = fast->next->next;if(slow==fast){slow = head;while(slow!=fast){slow = slow->next;fast = fast->next;}return slow;}}return NULL;}
};

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

相关文章:

  • 东莞做网站优化天助网络武安市精品网站开发
  • 大兴做网站学校官网
  • 网站接入商是什么意思会员卡管理系统哪里买
  • 仅有网站做app网络设计有限公司
  • 无忧网站源码关于网站建设的报告
  • 建网站自学wordpress 更新feed
  • 黑龙江省华龙建设有限公司网站seo具体seo怎么优化
  • 米课中有个内贸网站建设方象科技专注于什么领域
  • 一个专门做ppt的网站vps 做网站
  • 番禺响应式网站开发怎么利用QQ空间给网站做排名
  • 网站开发前端与后端源代码同行做的好的网站
  • 滁州 来安县建设局网站新潮狼网站建设
  • 英文网站建设一般多少钱wordpress实现微信登录界面
  • 汽车销售服务东莞网站建设产品网络推广服务
  • 在哪些网站做推广wordpress菜单.html
  • 深圳网站开发公司h5网页制作软件教程
  • 最新企业网站开发和设计软件百度餐饮网站建设
  • 什么样的网站流量容易做自己做视频直播网站
  • 西安高新网站制作百度一下首页百度
  • 怎么制作一个自己的网站网上花店网站建设
  • 局域网内建设网站个体工商户可以做网站吗
  • 衡阳退休职工做面膜网站大学生创新创业网站开发
  • 手机网站合同wordpress 本地搭建
  • 公共场所建设网站沈阳做平板网站
  • 网站开发用哪些技术房地产基础知识
  • 保健品 东莞网站建设适合毕设做的简单网站
  • 五站合一网站建设重庆网站建设接重庆零臻科技
  • 个人做排行网站深圳市创同盟科技有限公司
  • 企业手机网站建设策划网名logo设计制作
  • 网站诸多个人或主题网站建设 实验体会