c++ - 两个数字之和 == 目标
问题描述
给定一个整数数组 nums 和一个整数目标,返回两个数字的索引,使它们加起来等于目标。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int>nums = { 1,2,3,4,5 };
int target = 7 ;
for (int i = 0; i < nums.size()-1; i++)
{
for (int j = i + 1; j <= nums.size(); i++)
{
if (nums[i]+nums[j]==target)
{
cout << " [ " << i << " ," << j-1 << " ] ";
}
}
}
return 0;
}
当我运行程序时,我有两个错误:
Debug Assertion Failed , Expression:vector subscript out of range.
Unhandled exception at 0x7938E906 (ucrtbased.dll) in problems.exe: An invalid parameter was passed to a function that considers invalid parameters fatal. ( at line 18 --if(nums[i]+nums[j]==target))
有人能帮助我吗?
解决方案
for
您的代码中的第二个循环有 2 个错误:
- 条件部分应该
j < nums.size()
是. - 增量操作应该代替
j++
.i++
此外,在打印最终索引时, print j
,而不是j-1
.
看看下面的实现:
#include <iostream>
#include <vector>
int main()
{
std::vector<int>nums = { 1,2,3,4,5 };
int target = 7 ;
for (std::size_t i = 0; i < nums.size()-1; i++)
{
for (std::size_t j = i + 1; j < nums.size(); j++)
{
if (nums[i]+nums[j]==target)
{
std::cout << " [ " << i << " ," << j << " ] ";
}
}
}
return 0;
}
输出:
[ 1 ,4 ] [ 2 ,3 ]
推荐阅读
- ios - Phonegap/Cordova Barcodescanner 在最新的 ios 13 上再次全屏显示
- deployment - 如何将ansible字符串转换为浮点数并使用该值与浮点值进行比较
- git - VSCode:启用或禁用自上次 git 提交后修改的编辑器选项卡,使用修改后的选项卡颜色显示 git 状态
- python-3.x - 如何生成具有多列的数组行的组合?
- typescript - 绝对路径导入的 JS Cloud 函数错误
- html - 自动完成“打开”在 ReactJs 表单中不起作用
- chef-infra - 食谱中的厨师错误。缺少带刀的食谱
- google-api - Google Calendar API 获取上一页
- php - 如何在 laravel 刀片中拆分 foreach 循环
- django - 在 django 中使用 OneToOne Realtion 将用户信息管理到两个表中的最佳方法