[双指针] 数组元素的目标和(模板题)
程序员文章站
2022-05-06 21:35:54
...
文章目录
1. 双指针
lc,第一题,两数之和 不过这个是无序数组。
思路:
- 双指针,
i
指向a
数组的起始位置 -
j
指向b
数组的末尾位置 - 如果
a[i]+b[j]>t
说明大了,则j--
- 否则,小了,则
i++
代码:
#include <iostream>
using namespace std;
const int N = 1e5+5;
int n, m, x;
int a[N], b[N];
int main() {
cin >> n >> m >> x;
for (int i = 0; i < n; ++i) cin >> a[i];
for (int i = 0; i < m; ++i) cin >> b[i];
for (int i = 0, j = m - 1; i < n; ++i) {
while (j >= 0 && a[i] + b[j] > x) --j;
if (a[i] + b[j] == x) cout << i << ' ' << j << endl;
}
return 0;
}
上一篇: 二叉树的字符图形显示程序(半期考试)
下一篇: 双指针-面试题57. 和为s的两个数字
推荐阅读
-
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
-
算法题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
-
LeetCode1.两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,返回数组下标。假设每种输入只对应一个答案。但数组中同一个元素不能使用两遍
-
双指针法-删除数组中的重复元素以及奇偶排序
-
#leetcode刷题之路34-在排序数组中查找元素的第一个和最后一个位置
-
刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数