Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].遇到了一个小问题:
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {
int i=0;int j=0;
vector<int> result;
for(i=0;i<nums.size()-1;i++){
for(j=i+1;j<nums.size();j++){
if(nums[j]==target-nums[i]){
result.push_back(i);
result.push_back(j);
break;
}
}
}
return result;
}
};
此时输出正确,
Your input
[2,7,11,15] 9
Your answer
[0,1]
Expected answer
[0,1]
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i=0;int j=0;
vector<int> result;
for(i=0;i<nums.size()-1;i++){
for(j=i+1;j<nums.size();j++){
if(nums[j]==target-nums[i]){
break;
}
}
}
result.push_back(i);
result.push_back(j);
return result;
}
};
此时输出错误,
Your input
[2,7,11,15] 9
Your answer
[3,4]
Expected answer
[0,1]
说明break只能跳出一层循环,在for和while中都是如此。
要想跳出多层循环,可以添加标志flag,每次循环中检测flag并调用break