记录自己菜鸡开始刷算法的过程,
#include <iostream>
#include <vector>
#include "hash.h"
using namespace std;
vector<int> sum_p(std::vector<int> &num, int sum) {
vector<int> v;
for (int i = 0; i < num.size(); ++i) {
for (int j = i; j < num.size(); ++j) {
if (num[i] + num[j] == sum){
v.push_back(i);
v.push_back(j);
}
}
}
return v;
}
myhash h;
int main() {
std::vector<int> num = {2, 7, 11, 15};
int sum;
cin >> sum;
vector<int> f;
// f = sum_p(num, sum);
f = h.toSsum(num,sum);
for(const auto& number:f){
std::cout<< number << " ";
}
std::cout<< std::endl;
return 0;
}
hash.cpp
#include "hash.h"
std::vector<int> myhash::toSsum(std::vector<int> &nums, int target) {
std::map<int, int> t;
std::vector<int> v;
for (int i = 0; i < nums.size(); ++i) {
t.insert(std::map<int, int>::value_type(nums[i], i));
}
for (int j = 0; j < nums.size(); ++j) {
if (t.count(target - nums[j]) > 0 && (t[target - nums[j]] != j)) {
v.push_back(j);
v.push_back(t[target - nums[j]]);
break;
}
}
return v;
}
hash.h
//
// Created by masterqiu on 2024/3/1.
//
#ifndef ACM_HASH_H
#define ACM_HASH_H
#include <iostream>
#include <vector>
#include <map>
class myhash {
public:
std::vector<int> toSsum(std::vector<int> &nums, int num);
};
#endif //ACM_HASH_H