c++ - 为什么是'break;' 嵌套循环中的 if 语句没有按预期工作?
问题描述
我正在尝试LeetCode 上的二和问题。这是我的代码 -
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> output{};
for(int i = 0; i < nums.size(); i++){
for(int j = 0; j < nums.size(); j++){
if (nums[i] + nums[j] == target && i - j != 0){
output.push_back(i);
output.push_back(j);
break;
}
}
}
return output;
}
};
对于输入 -
[3,2,4]
6
输出是 -
[1,2,2,1]
虽然它实际上应该是 -
[1,2]
这意味着当 if 语句为真时,嵌套 for 循环中 if 下的 break 语句会导致循环中断。但这不是在这里发生的。
仅当我将嵌套 for 循环的初始化从 -
int j = 0;
至
int j = i + 1;
它的工作原理。我明白为什么当 j 改变时它会起作用。但是,为什么 j = 0 代码不起作用超出了我的理解。为什么break语句不起作用?
PS 这是break
使用类似逻辑和相同输入的 Python 代码 -
class Solution(object):
def twoSum(self, nums, target):
for i in range(len(nums)):
for j in range(len(nums)):
if nums[i] + nums[j] == target and i - j != 0:
return [i, j]
break
else:
continue
解决方案
这是因为 break 只中断了内部 for 循环,而不是外部 for 循环。
推荐阅读
- javascript - 设置为另一个对象的 Javascript 对象未定义
- noise-reduction - 谷歌云语音背景噪音
- java - If Statement not working with double
- javascript - Display html blank code in HTML page
- arrays - 当我在发布后从响应中推送一些数据时,Angular 4 不会更新数组
- javascript - Path 与 Route 匹配,但该路由的组件未呈现
- regex - 如何使用 REGEX 格式化“电话号码”?
- javascript - 节点 js require()[env] 未定义
- java - ModelAndView not returning model to the JSP in spring mvc
- javascript - onKeyUp 不能在 onChange 的 React 中工作