题目描述
题目链接:https://leetcode-cn.com/problems/two-sum
在leetcode上的解题代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> tmp; // 建立hash表存放数组元素
vector<int> res(2,-1); // 存放结果
for(int i=0;i<nums.size();i++)
tmp.insert(map<int,int>::value_type(nums[i],i));
for(int i=0;i<nums.size();i++)
{
if(tmp.count(target-nums[i])>0&&(tmp[target-nums[i]]!=i))
// 判断是否找到目标元素且目标元素不能是本身
{
res[0]=i;
res[1]=tmp[target-nums[i]];
break;
}
}
return res;
};
};
将解题代码放至本地编译器
#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> tmp; // 建立hash表存放数组元素
vector<int> res(2,-1); // 存放结果
for(int i=0;i<nums.size();i++)
tmp.insert(map<int,int>::value_type(nums[i],i));
for(int i=0;i<nums.size();i++)
{
if(tmp.count(target-nums[i])>0&&(tmp[target-nums[i]]!=i))
// 判断是否找到目标元素且目标元素不能是本身
{
res[0]=i;
res[1]=tmp[target-nums[i]];
break;
}
}
return res;
};
};
int main () {
vector<int> nums = {2,7,11,15};
Solution solution;
vector<int> res = solution.twoSum(nums, 9);
for (int i = 0; i < int(res.size()); ++i) {
cout << i << " ";
}
return 0;
}
从两段代码中不难发现,在添加相应的头文件后,其他过程分为四步:
- 定义一个main函数
- 构造出相应的变量
- 调用相应的函数
- 特定位置设置cout输出进行调试
输出结果
vector的另一种构造方法:以数组首尾地址构造vector
int main () {
int arr = {2,7,11,15};
// 构造vector时存入数组的首尾地址构造
vector<int> res(arr, arr + sizeof(arr) / sizeof(int));
Solution solution;
for (int i = 0; i < int(res.size()); ++i) {
cout << i << " ";
}
return 0;
}```