题目链接:1. Two Sum
题目大意:给你一个整数数组,问里面能不能找出两个数来使得他们对应的和为某一个具体要求的target值
题目思路:简单题,因为保证只有一组这样的数据,所以每次读到一个数,先判断target-value对应的值是否已经出现过,是则寻找成功返回对于结果;否则打上一个标记标记该值存在并记录位置
时间复杂度&&空间复杂度:O(n)&&O(max(nums[i],target))(n为数据个数,nums[i]为值)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int>flag,seat;
vector<int> ans;
int len = nums.size();
for(int i = 0;i < len;i++){
if(flag[target-nums[i]] == 1&&seat[target-nums[i]] != i){
ans.push_back(i);
ans.push_back(seat[target-nums[i]]);
return ans;
}
flag[nums[i]] = 1,seat[nums[i]] = i;
}
return ans;
}
};