题目:两数之和
题目链接:https://leetcode-cn.com/problems/two-sum/
这是本人第一次用 LeetCode来刷算法题,被LeetCode的输入格式折磨的痛不欲生,下面是代码,主要运用了two points 思想(感觉自己像是用了):
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
vector<int> temp(nums);
int a =0, b = nums.size() - 1;
sort(nums.begin(), nums.end());
for(;a<b;)
{
if(nums[a] + nums[b] == target)
{
break;
}
else if(nums[a] + nums[b] < target)
{
a++;
}
else
{
b--;
}
}
vector<int>::iterator it = find(temp.begin(), temp.end(), nums[a]);
vector<int>::iterator is = find(temp.begin(), it, nums[b]);
if(is != it)
{
res.push_back(distance(temp.begin(), is));
res.push_back(distance(temp.begin(), it));
}
else
{
is = find(it + 1, temp.end(), nums[b]);
res.push_back(distance(temp.begin(), it));
res.push_back(distance(temp.begin(), is));
}
return res;
}
};
下面是运行速度的结果:
时间勉强还说得过去,但空间确实相当惨不忍睹了
以上自己第一次的做题情况,希望大家批评指正,一起交流进步!