各位大佬帮忙看看,我刷的leetcode的第一题,数组的是数目少的时候程序可以运行,数组变多后就失败了,求指点,拜托

weixin_42179892 2019-01-11 12:58:56
下面是我的程序:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> fan;
bool a=0;
for(int i=0;i<sizeof(nums);i++)
{
for(int j=i+1;j<sizeof(nums);j++)
{
if (nums[i]+nums[j]==target)
{
a=1;
fan.push_back(i);
fan.push_back(j);
break;
}
}
if(a) break;
}
return fan;
}
};
数组少时,结果如下:
Your input
[815,650,920,125,277,221,336,847,168,23,677,61,400,136,874,363,394,199,863,997,794,587,124,321]
542
Output
[5,23]
Diff
Expected
[5,23]

数组多一个数,结果如下:
Your input:
[1,815,650,920,125,277,221,336,847,168,23,677,61,400,136,874,363,394,199,863,997,794,587,124,321]
542
Output:
[]
Expected:
[6,24]

求大佬帮忙,非常感谢
...全文
1028 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
_ZGq 2019-01-17
  • 打赏
  • 举报
回复
引用 7 楼 weixin_42179892 的回复:
我把sizeof(nums)改为nums.size()以后就能运行了,也不知道为啥?

sizeof(nums)求的是vector<int>&的大小,当然是不对的。
nums.size()求的是nums现在所占的空间,是对的。
weixin_42179892 2019-01-17
  • 打赏
  • 举报
回复
我把sizeof(nums)改为nums.size()以后就能运行了,也不知道为啥?
tianxinjiayuan 2019-01-14
  • 打赏
  • 举报
回复
我照着你的代码改成了如下的程序,跑的结果是对的。
#include<stdio.h>
int main()
{
int nums[]={1,815,650,920,125,277,221,336,847,168,23,677,61,400,136,874,363,394,199,863,997,794,587,124,321};
int fan,fen;
int a=0;
int target=542;
int i,j;

for(i=0;i<sizeof(nums)/sizeof(int);i++)
{
for(j=i+1;j<sizeof(nums)/sizeof(int);j++)
{
if ((nums[i]+nums[j])==target)
{
a=1;
fan=i;
fen=j;
break;
}
}
if(a) break;
}
printf("[%d,%d,%d+%d=542]\n",fan,fen,nums[fan],nums[fen]);
getchar();
}
weixin_42179892 2019-01-11
  • 打赏
  • 举报
回复
大佬可以帮我看一下我的问题在哪吗?
weixin_42179892 2019-01-11
  • 打赏
  • 举报
回复
大佬可以帮我看看我的问题在哪吗?
weixin_42179892 2019-01-11
  • 打赏
  • 举报
回复
题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数,输出数组的位置。 可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
lin5161678 2019-01-11
  • 打赏
  • 举报
回复
把题目也贴出来

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧