【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、题目链接表述

移动零

【C++精品题目速刷】双指针_第1张图片

【C++精品题目速刷】双指针_第2张图片

2、题目解析

我们直接利用样例进行解析:
【C++精品题目速刷】双指针_第3张图片

指针1的dest先从-1开始,指针2的cur从0下标开始,每当cur所指向的数不为0的时候,则dest++并将dest和cur所指向的值进行交换,直到cur走到大于整个数组。

3、代码

【C++精品题目速刷】双指针_第4张图片


二、复写零

1、题目链接表述

复写零

【C++精品题目速刷】双指针_第5张图片

2、题目解析

【C++精品题目速刷】双指针_第6张图片

用样例来进行解释:

【C++精品题目速刷】双指针_第7张图片
特殊情况:
【C++精品题目速刷】双指针_第8张图片

3、代码

【C++精品题目速刷】双指针_第9张图片

三、快乐数

1、题目链接表述

快乐数

【C++精品题目速刷】双指针_第10张图片

2、题目解析

只有如下两种情况:
【C++精品题目速刷】双指针_第11张图片

为什么一定是有环的呢?我们通过鸽巢原理来进行解析一下:
【C++精品题目速刷】双指针_第12张图片

利用快慢指针,找最后交点的环是不是1即可,是1的话就返回是快乐数,不是1的话就返回不是快乐数。

3、代码

【C++精品题目速刷】双指针_第13张图片

四、盛最多水的容器

1、题目链接表述

盛最多水的容器

【C++精品题目速刷】双指针_第14张图片

2、题目解析

【C++精品题目速刷】双指针_第15张图片

所以我们用下面的值进行解析:
【C++精品题目速刷】双指针_第16张图片
v中取最大值即可。

3、代码

【C++精品题目速刷】双指针_第17张图片

五、查找总价格为目标值的两个商品

1、题目链接表述

查找总价格为目标target的数组

【C++精品题目速刷】双指针_第18张图片

2、题目解析

【C++精品题目速刷】双指针_第19张图片

3、代码

【C++精品题目速刷】双指针_第20张图片

六、有效三角形的个数

1、题目链接表述

有效三角形的个数leetcode链接

【C++精品题目速刷】双指针_第21张图片

2、题目解析

【C++精品题目速刷】双指针_第22张图片

【C++精品题目速刷】双指针_第23张图片

3、代码

【C++精品题目速刷】双指针_第24张图片

七、三数之和

1、题目链接表述

三数之和leetcode链接

【C++精品题目速刷】双指针_第25张图片

2、题目解析

主要思路为固定一个值,从左往右走这个值,再在每个固定值中进行双指针的操作,注意的点在于当找到相同的值的时候,此时我们需要去重操作,操作方法是要将重复的数指针往中间移动,并且要注意越界的行为,所以就需要我们继续在while中控制left

【C++精品题目速刷】双指针_第26张图片

3、代码

【C++精品题目速刷】双指针_第27张图片

八、四数之和

1、题目链接表述

四数之和leetcode链接
【C++精品题目速刷】双指针_第28张图片

2、题目解析

【C++精品题目速刷】双指针_第29张图片

3、代码

【C++精品题目速刷】双指针_第30张图片


你可能感兴趣的:(C++刷题,c++,开发语言,数据结构)