F. Eating Candies(双指针)

简介: F. Eating Candies(双指针)

题目链接

Problem - 1669F - Codeforces


一些话

淘汰赛的双指针

流程

读题一遍,只此题同时访问数组里的两个元素,为双指针题目,指针可以同时动,可以分别动,根据其来写指针移动语句

套路

指针可单个移动,可一起移动,情况多样:

       for循环括号内不写指针移动,指针移动和判断语句在循环体内写

双指针的初始化:

指针移动后才应该加上移动后位置的数据,此时代码里是没办法把初始位置的数据加到ca和cb里的,因此在设置1和n为初始指针位置时,ca和cb也应得到1和n两个位置的数据作为初始值


ac代码

#include <iostream>
using namespace std;const int N = 2e5 + 10;
        int f[N];
int main(){
    int t;
    cin >> t;
    while(t--){
        int n;
        cin >> n;
        for(int i= 1;i <= n;i++){
            cin >> f[i];
        }
        int ca = f[1],cb = f[n],res = 0;
        for(int i = 1,j = n;i < j;){//指针移动后才应该加上移动后的数据,此时代码里是没办法把初始位置的数据加到ca和cb里的,因此在设置1和n为初始指针位置时,ca和cb也应得到1和n两个位置的数据作为初始值
//只会同时移动的双指针,将移动条件作为for循环条件,指针移动也写在for的括号里
//会一起移动,也会单独移动的,条件和指针移动用if写在循环体内
            if(ca < cb){
                i++;
                ca += f[i];
            }
            else if(ca > cb){
                j--;
                cb += f[j];
            }
            else if(ca == cb){
                res = i + n - j + 1;
                i++,j--;
                ca += f[i];
                cb += f[j];
            }
        }
        cout << res << endl;
    }
    return 0;
}
目录
相关文章
|
3月前
【LeetCode 16】15.三数之和(双指针法)
【LeetCode 16】15.三数之和(双指针法)
44 1
|
8月前
|
索引 容器
双指针解决leetcode1两数之和
双指针解决leetcode1两数之和
53 0
|
8月前
|
索引 容器
leetcode双指针总结
leetcode双指针总结
37 0
|
算法
【算法专题突破】双指针 - 三数之和(7)
【算法专题突破】双指针 - 三数之和(7)
57 0
|
3月前
【LeetCode 03】双指针法总结
【LeetCode 03】双指针法总结
24 0
|
5月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
7月前
|
Java
蓝桥杯-动态规划专题-子数组系列,双指针
蓝桥杯-动态规划专题-子数组系列,双指针
|
8月前
|
存储 算法 容器
算法:双指针
算法:双指针
63 3
|
8月前
|
存储 算法 Java
【算法系列篇】双指针
【算法系列篇】双指针
|
8月前
|
算法 测试技术 C#
[二分查找双指针]LeetCode881: 救生艇
[二分查找双指针]LeetCode881: 救生艇