在C++中查找数组中至少2个数字的和等于给定目标值的问题可以使用双指针法来解决。
双指针法是一种常用的解决数组问题的方法,它通过使用两个指针在数组中移动来寻找目标值。具体步骤如下:
下面是一个示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
std::vector<int> findTwoNumbers(std::vector<int>& nums, int target) {
std::sort(nums.begin(), nums.end()); // 排序数组
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() {
std::vector<int> nums = {2, 7, 11, 15};
int target = 9;
std::vector<int> result = findTwoNumbers(nums, target);
if (result.empty()) {
std::cout << "No two numbers found." << std::endl;
} else {
std::cout << "Two numbers found at indices: " << result[0] << ", " << result[1] << std::endl;
}
return 0;
}
这段代码中,我们使用了std::sort函数对数组进行排序,然后使用双指针法在排序后的数组中查找满足条件的两个数字。如果找到了这两个数字,则返回它们的索引;如果没有找到,则输出相应的提示信息。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云