暴力 O()
/*
* @lc app=leetcode.cn id=1 lang=cpp
*
* [1] 两数之和
*
* https://leetcode-cn.com/problems/two-sum/description/
*
* algorithms
* Easy (46.26%)
* Likes: 5691
* Dislikes: 0
* Total Accepted: 446.4K
* Total Submissions: 964.8K
* Testcase Example: '[2,7,11,15]\n9'
*
* 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
*
* 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
*
* 示例:
*
* 给定 nums = [2, 7, 11, 15], target = 9
*
* 因为 nums[0] + nums[1] = 2 + 7 = 9
* 所以返回 [0, 1]
*
*
*/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i,j;
vector<int> result;
for(i=0;i<nums.size()-1;i++){
for (j=i+1;j<nums.size();j++){
if(nums[i]+nums[j]==target){
result.push_back(i);
result.push_back(j);
return result;
}
}
}
return result;
};
};
HashMap O()
double traval
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int ,int > result;
vector b(2,-1);
int i,j;
for(i=0;i<nums.size();i++){
result.insert(map<int,int>::value_type(nums[i],i));
}
for(j=0;j<nums.size();j++){
if(result.count(target-nums[j])>0&&result[target-nums[j]]!=j){
b[0]=j;
b[1]=result[target-nums[j]];
break;
}
}
return b;
}
};
once traval
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int ,int > result;
vector<int> temp(2,-1);
int i,j;
for(i=0;i<nums.size();i++){
if(result.count(nums[i])>0){
temp[0]=result[nums[i]];
temp[1]=i;
break;
}
result.insert(map<int,int>::value_type(target-nums[i],i));
}
return temp;
}
};
网友评论