0
私は、この回答のアルゴリズムを作るためにマップを使用しようとしていますhttps://leetcode.com/problems/two-sum/#/description O(n)、しかし何らかの理由で私は多くのテストケースに対して不適切なインデックスを取得しています。試してみてくださいLeetCode:TwoSum Solution
私が知る限り、私はイテレータを適切にチェックしていますが、これは私には新しいものです。私が望む正しいインデックスを返すのかどうかは完全にはわかりません。
//My Code:
#include <iostream>
#include <cstdio>
#include <array>
#include <vector>
#include <map>
std::vector<int> twoSum(int nums[], int size, int target)
{
std::vector<int> answer;
std::map<int, int> myMap;
std::map<int, int>::iterator it;
std::cout << size << std::endl;
for (int i = 0; i < size; i++)
{
myMap.insert(std::pair<int, int>(nums[i], i));
int indexItOne = distance(myMap.begin(), myMap.find(nums[i]));
int indexItTwo = distance(myMap.begin(), myMap.find(target-nums[i]));
it = myMap.find(target - nums[i]);
if (it != myMap.begin() || indexItOne != indexItTwo)
{
answer.push_back(i);
answer.push_back(distance(myMap.begin(), myMap.find(target - nums[i])));
return answer;
}
}//for
}//twoSum
変更この 'それ= myMap.begin()'この 'それ= myMap.end()' ...実際にそれを傷つける。あなたは失われ、あなたの論理に従うことができないという発見の束を持っています。 – Arash
ループが終了するとどうなりますか?あなたは何を返しますか? –
ああ、私はmyMap.begin()がそこに入ったのかどうかわかりませんが、確かにmyMap.end()でなければなりません –