两个数的和,直接贴代码了。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::map<int, int> val_index;
int index = 0;
for (auto it = nums.begin(); it != nums.end(); it++) {
val_index[*it] = index;
index++;
}
int index1 = 0;
int index2 = 0;
int val = 0;
for (int i = 0; i < nums.size(); i++) {
index1 = i;
val = target - nums[i];
auto it = val_index.begin();
it = val_index.find(val);
if (it != val_index.end()) {
index2 = it->second;
if (index1 == index2) {
continue;
}
break;
}
}
vector<int> index_vec;
index_vec.push_back(index1);
index_vec.push_back(index2);
return index_vec;
};
};
// using namespace std;
int main(int argc, char *argv[]) {
Solution solution;
// 2,7,11,15
// 3,2,4
vector<int> nums;
nums.push_back(2);
nums.push_back(7);
nums.push_back(11);
nums.push_back(15);
int target = 9;
vector<int> index_vec;
index_vec = solution.twoSum(nums, target);
if (index_vec.size() == 2) {
std::cout << "filename: " << __FILE__ << " linenum: " << __LINE__
<< "index: " << index_vec[0] << "," << index_vec[1] << std::endl;
}
return 0;
}