1. 两数之和
题目:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一:
哈希表法:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> hash;
for(auto it=nums.begin();it!=nums.end();it++){
if(hash.count(target-*it)>0){
result.push_back(it-nums.begin());
result.push_back(hash[target-*it]);
return result;
}
hash[*it]=it-nums.begin();
}
return result;
}
};
解析:
力扣大神解析
解法二:
暴力破解
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
for (auto i=nums.begin();i!=nums.end()-1;i++){
for (auto j=i+1;j!=nums.end();j++){
if((*i+*j)==target){
result.push_back(i-nums.begin());
result.push_back(j-nums.begin());
return result;
}
}
}
return result;
}
};