第1题(1.22) :两数之和
?解法一:暴力破解
#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
vector<int> twoSum1(vector<int>& nums, int target) {
for (int i = 0; i < nums.size(); i++) {
for (int j = i + 1; j < nums.size(); j++) {
if (nums[i] + nums[j] == target) {
return { i,j }; //vector<int>类型(push_back)、{i, j}
}
}
}
return {};
}
vector<int> twoSum2(vector<int>& nums, int target);
};
vector<int> Solution::twoSum2(vector<int>& nums, int target) {
//构建hash_map
map<int, int> a;
for (int i = 0; i < nums.size(); i++) {
a[nums[i]] = i;
}
// 打印map:利用迭代器
for (map<int, int>::iterator it = a.begin();it != a.end(); it++) {
printf("%d %d\n", it->first, it->second);
}
//寻找合适的值:
for (int j = 0; j < nums.size(); j++){
printf(" j=%d nums[j]=%d \n", j, nums[j]);
if (a.count(target - nums[j]) > 0) {
return { j,a[target - nums[j]] };
}
}
return { -1,-1 };
}
int main()
{
Solution* a = new(Solution);
vector<int> arrays{ 2, 7, 11, 15 };
vector<int> act = a->twoSum2(arrays, 26);
cout << act[0]<< act[1] << endl;
cout << "Hello World!\n";
}
ector 是C++ STL的一个重要成员,使用它时需要包含头文件
总结:vector的常见用法
一、vector的创建:
(1)vector<int> a(10);
(2)vector<int> a(10,1);
(3)vector<int> a(b);
(4)vector<int> a(b.begin(),b.begin+3);
(5)int b[7]={1,2,3,4,5,9,8};
(6)vector<int> a(b,b+7);
二、vector的查找
(1)a[i]; //返回a的第i个元素,当且仅当a[i]存在
(2)a.at(index)
(3)a.
map的常见用法