双 指 针

本文分享了双指针技巧在解决一系列问题中的巧妙应用,包括删除重复元素、查找最多水的容器等。通过实例展示了如何利用快慢指针和灵活移动来简化复杂的数据结构题目。参赛者的经历也揭示了这类问题在竞赛中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双指针力扣入门记录
(感觉双指针很妙啊
删除重复元素 利用快慢指针删除重复元素,删除后的数组到slow指针截止
删除值为val的元素
盛最多水的容器 初始两个指针为左右端,每次移动数字较小的那个指针, 我们无法知道最大的面积取至哪两个坐标,只能在移动指针试图让面积增大的同时维护最大面积ans。

毒瘤数据结构题
2021百度之星初赛第一场
一开始以为比较难就没做,赛后发现就是思维题
发现一个双指针解法感觉很妙贴一下
ps:现在交杭电会t,不知道咋回事,估计是测评机不如比赛时的好

#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e6 + 9;
inline int read()
{
    char ch=getchar();int x=0,f=0;
    while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
    while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
    return f?-x:x;
}
int n, a[maxn], x = 1, y = 2;
int main()
{
    n = read();
    for(int i = 1; i <= n; ++i)
	{
        int op = read(), p = read();
        if(op == 1)
		{
            a[p] = 1;
            while(a[x]) x++;
            while(a[y] || y == x) y++;
        }
        else printf("%d\n",p == x ? y : x);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值