私の解決策:
1.最初のアイデアは、2つの数値の合計であるLeetCodeの最初の質問であり、unordered_mapも使用されます。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> m;
vector<int> res;
for(int i=0;i<nums.size();i++){
if(m.count(target-nums[i])){
res.push_back(target-nums[i]);
res.push_back(nums[i]);
return res;
}
else
m[nums[i]]=1;
}
return res;
}
};
2.これはインクリメンタル配列であり、ダブルポインターDafaを使用できることに注意してください。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i=0,j=nums.size()-1;
vector<int> res;
while(i<j){
if(nums[i]+nums[j]==target){
res.push_back(nums[i]);
res.push_back(nums[j]);
return res;
}
else if(nums[i]+nums[j]<target) i++;
else j--;
}
return res;
}
};