1.基础:刚接触C++编程没几天,目前只会c++的头文件,基本输入输出的使用,了解几个比较重要的容器vector,set,map,但是不太会用
2.题目如下—来自leetcode,网址跳转
3.解法一:最简单解法-----暴力解法,两层for循环遍历
直接在leetcode给的测试环境中,开始定义变量,编写程序
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return {i, j};
}
}
}
return {};
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4.解法二:空间换时间思想,利用哈希表填值,直接查找值
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
5.存疑:c++中的vector和map使用的不太熟练,很多使用方法还不会,为什么输入输出是这样的{},还有一些经常使用到的函数,比如find(),size()。