本文主要是介绍【C++精品题目速刷】双指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【C++精品题目速刷】双指针
- 一、移动零
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 二、复写零
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 三、快乐数
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 四、盛最多水的容器
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 五、查找总价格为目标值的两个商品
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 六、有效三角形的个数
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 七、三数之和
- 1、题目链接表述
- 2、题目解析
- 3、代码
- 八、四数之和
- 1、题目链接表述
- 2、题目解析
- 3、代码
一、移动零
1、题目链接表述
移动零
2、题目解析
我们直接利用样例进行解析:
指针1的dest先从-1开始,指针2的cur从0下标开始,每当cur所指向的数不为0的时候,则dest++并将dest和cur所指向的值进行交换,直到cur走到大于整个数组。
3、代码
二、复写零
1、题目链接表述
复写零
2、题目解析
用样例来进行解释:
特殊情况:
3、代码
三、快乐数
1、题目链接表述
快乐数
2、题目解析
只有如下两种情况:
为什么一定是有环的呢?我们通过鸽巢原理来进行解析一下:
利用快慢指针,找最后交点的环是不是1即可,是1的话就返回是快乐数,不是1的话就返回不是快乐数。
3、代码
四、盛最多水的容器
1、题目链接表述
盛最多水的容器
2、题目解析
所以我们用下面的值进行解析:
v中取最大值即可。
3、代码
五、查找总价格为目标值的两个商品
1、题目链接表述
查找总价格为目标target的数组
2、题目解析
3、代码
六、有效三角形的个数
1、题目链接表述
有效三角形的个数leetcode链接
2、题目解析
3、代码
七、三数之和
1、题目链接表述
三数之和leetcode链接
2、题目解析
主要思路为固定一个值,从左往右走这个值,再在每个固定值中进行双指针的操作,注意的点在于当找到相同的值的时候,此时我们需要去重操作,操作方法是要将重复的数指针往中间移动,并且要注意越界的行为,所以就需要我们继续在while中控制left<right。
3、代码
八、四数之和
1、题目链接表述
四数之和leetcode链接
2、题目解析
3、代码
这篇关于【C++精品题目速刷】双指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!