第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_mapmap<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的常见用法