トピック:二つの数字と
トピックがリンクします。https://leetcode-cn.com/problems/two-sum/
これはアルゴリズムLeetCodeタイトルを磨くために、私の最初の時間である、拷問LeetCode入力は、ここでは、むしろダイformat'dコードです2つの点を使用しての主なアイデアは、(使用済みのように感じます):
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;
}
};
ここではスピード実行した結果、次のとおりです。
かろうじて通行可能時間は、しかし、スペースは実際にはかなりぞっとされ
行うには、状況の彼の最初のタイトルよりも、私は一緒にあなたの批判や交換の進展を願っています!