本人计算机大二在读,碍于技术水平及认知一直在剽窃别人的知识,今天起立志建立自己的博客,分享成长路上的点滴。话不多说,言归正传。
对于数组题个人体会就是注意应用下标。本题思路如下:
就是排列组合。由图我们可以看到 需要两个‘指针’遍历数组,即两个下标,它们一个在前一个在后。代码如下:
vector<int> twoSum(vector<int>& nums, int target) {
int fast = 0, slow = 0; //快慢指针 注意下标关系!
vector<int> result;
int n = nums.size();
while(slow < n) //控制迭代次数
{
fast++; //快指针一直迭代
if(nums[fast] + nums[slow] == target) //找到了
{
result.push_back(fast);
result.push_back(slow);
return result;
}
if(fast == nums.size() - 1) //fast 移动到最后了
{
slow++; //slow前移
fast = slow; //fast 移回去
if(slow == nums.size() - 1) //slow移到头了,全找完了
break;
}
}
return result;
}