0
我試圖使用地圖,以使算法此答案https://leetcode.com/problems/two-sum/#/description爲O(n),但出於某種原因,我發現了不當的指標進行了大量的測試情況下,我很試圖本文給出了:TwoSum解決方案
從我可以告訴,我做正確的檢查的迭代器,但這些都是一種新的給我,我不能完全肯定,如果我回來,我想正確的指標。
//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() –