c ++ map.count найти номер не существует - PullRequest
0 голосов
/ 07 января 2019

Учитывая массив целых чисел, вернуть индексы двух чисел так, чтобы они суммировались с определенной целью.

Вы можете предположить, что у каждого входа будет только одно решение, и вы не можете использовать один и тот же элемент дважды.

Я пытался использовать map в c ++, однако он находит 542-863 = -321 в dict, что странно.

#include <iostream>
#include <map>
#include <vector>

using namespace std;


vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
int len=nums.size();
if(len==0){
    return result;
}

map<int, int> dict;
map<int, int>::iterator iter;

for(int i=0; i<len;i++){
    dict[nums[i]]=i;
    int ss=target-nums[i];
    cout<<ss<<" ";
    int tag=dict.count(ss);
    cout<<tag<<"tag"<<endl;
    if(dict[target-nums[i]]!=i && tag!=0){
        result.push_back(i);
        result.push_back(dict[target-nums[i]]);
        break;
    }



}
cout<<result[0]<<result[1]<<endl;
return result;
}


int main(){
int a[]={230,863,916,585,981,404,316,785,88,12,70,435,384,778,887,755,740,337,86,92,325,422,815,650,920,125,277,336,221,847,168,23,677,61,400,136,874,363,394,199,863,997,794,587,124,321,212,957,764,173,314,422,927,783,930,282,306,506,44,926,691,568,68,730,933,737,531,180,414,751,28,546,60,371,493,370,527,387,43,541,13,457,328,227,652,365,430,803,59,858,538,427,583,368,375,173,809,896,370,789};
cout<<sizeof(a)/sizeof(a[0])<<endl;
vector<int> nums(a, a+100);

twoSum(nums, 542);
}

Выход [40,0]

ожидать [28,45]

1 Ответ

0 голосов
/ 07 января 2019

Хорошо, я понял, поскольку у меня есть dict[target-nums[i]] != i, оно выполняется, поэтому существует диктат для target-nums[i], так что граф может его найти!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...