双指针算法c++代码
时间: 2024-08-24 12:01:07 浏览: 76
双指针算法是一种常用的解决数组、链表等问题的技术,它通常涉及到两个指针,一个从头开始,另一个从尾部开始,通过移动这两个指针来达到某种查找、遍历或者优化的目的。以下是使用C++实现的一个简单示例,用于在一个有序数组中找到两个数使得它们之和等于目标值:
```cpp
#include <vector>
using namespace std;
pair<int, int> twoSum(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
return {left, right};
} else if (sum < target) {
left++;
} else {
right--;
}
}
// 如果找不到满足条件的元素对,返回空对
return {};
}
// 示例用法
int main() {
vector<int> nums = {2, 7, 11, 15};
int target = 9;
pair<int, int> result = twoSum(nums, target);
if (result.first != -1 && result.second != -1) {
cout << "Elements found at indices: " << result.first << ", " << result.second << endl;
} else {
cout << "No such pair exists." << endl;
}
return 0;
}
```
在这个例子中,如果找到了两个元素使其和等于`target`,函数会立即返回这两个元素的索引。如果没有找到,`left`和`right`会在遍历过程中逐渐靠近并最终相遇。
阅读全文