【算法|双指针系列No.9】AcWing 799. 最长连续不重复子序列 && AcWing 800. 数组元素的目标和 && AcWing 2816. 判断子序列

小咪咪 2024-04-27 06:58 138阅读 0赞

个人主页:兜里有颗棉花糖
欢迎 点赞? 收藏✨ 留言✉ 加关注?本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】
?本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
?希望我们一起努力、成长,共同进步。
在这里插入图片描述

目录

  • 一、AcWing 799. 最长连续不重复子序列
    • 解题代码
  • 二、AcWing 800. 数组元素的目标和
    • 解题代码
  • 三、AcWing 2816. 判断子序列
    • 解题代码

一、AcWing 799. 最长连续不重复子序列

原题链接:点击直接跳转到该题目

解题代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N = 1e5 + 10;
  7. int nums[N];
  8. int b[N]; // 计数器
  9. int main()
  10. {
  11. int n,res = 0;
  12. cin >> n;
  13. for(int i = 0;i < n;i++) cin >> nums[i];
  14. for(int i = 0,j = 0;i < n;i++)
  15. {
  16. b[nums[i]]++;
  17. while(j < n && b[nums[i]] > 1)
  18. {
  19. b[nums[j]]--;
  20. j++;
  21. }
  22. res = max(res,i - j + 1);
  23. }
  24. cout << res << endl;
  25. return 0;
  26. }

二、AcWing 800. 数组元素的目标和

原题链接:点击直接跳转到该题目

解题代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N = 1e5 + 10;
  7. int a[N],b[N];
  8. int main()
  9. {
  10. int n,m,x;
  11. cin >> n >> m >> x;
  12. for(int i = 0;i < n;i++) cin >> a[i];
  13. for(int i = 0;i < m;i++) cin >> b[i];
  14. for(int i = 0,j = m - 1;i < n;i++)
  15. {
  16. while(j >= 0 && a[i] + b[j] > x) j--;
  17. if(a[i] + b[j] == x)
  18. {
  19. printf("%d %d\n",i,j);
  20. break;
  21. }
  22. }
  23. return 0;
  24. }

三、AcWing 2816. 判断子序列

原题链接:点击直接跳转到该题目

解题代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N = 1e5 + 10;
  7. int a[N],b[N];
  8. int main()
  9. {
  10. int n,m;
  11. cin >> n >> m;
  12. for(int i = 0;i < n;i++) cin >> a[i];
  13. for(int i = 0;i < m;i++) cin >> b[i];
  14. int i = 0,j = 0;
  15. while(i < n && j < m)
  16. {
  17. if(a[i] == b[j]) i++;
  18. j++;
  19. }
  20. if(i == n) cout << "Yes";
  21. else cout << "No";
  22. return 0;
  23. }

发表评论

表情:
评论列表 (有 0 条评论,138人围观)

还没有评论,来说两句吧...

相关阅读