Part 1:基础理解
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环(即,距离break最近的循环),并开始执行下一行代码。
参考网址:https://www.runoob.com/python/python-break-statement.html
即:如果是
for i ....
for j ....
break
这样子的循环,只跳出来for j ....这个循环。
Part 2: 思考来源:
Leetcode题目209 -长度最小的子数组 用 暴力解法 —— 两个for循环 来解题出现的疑问。
https://leetcode-cn.com/problems/minimum-size-subarray-sum/
【(1)错误思路如下:
“开始以为是 ‘遇到 break语句 跳出所有的循环’,
那Leetcode上面这个题目,如示例1所示:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
如果是上面这个代码,那计算出来的结果应该是 2 + 3 + 1 + 2 > 7
即在 i = 0, j = 3 的时候就跳出循环了呀。
那 ans = 3 - 0 + 1 = 4?
这个解题答案就不对了。
(2)正确思路如下:
实际上是 ‘遇到 break语句 跳出距离break最近的循环’ ,
即,Leetcode题目209的 暴力解法 中,只跳出for j 循环。
即使在 i = 0, j = 3 的时候,计算出来的结果是 2 + 3 + 1 + 2 > 7 ,这时只是 ans 暂时等于 j - i + 1 = 4。
后面会继续进行 for i 循环,即i = 1, j = rang(1 , n)...,这样就可以找到最小的ans,
即 该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,的长度。”】
Part 3: 一些简单的帮助理解循环 + break语句的小例子
例1:单层循环
代码:
var = 10
while var > 0:
print('当前变量值:', var)
var -= 1
if var == 5:
break
print('Good')
print('Goodbye')
输出:
>>>
当前变量值: 10
Good
当前变量值: 9
Good
当前变量值: 8
Good
当前变量值: 7
Good
当前变量值: 6
Goodbye
例2:双层循环
代码:
for i in range(1, 3):
print(i)
var = 10
while var > 0:
print('当前变量值:', var)
var -= 1
if var == 5:
break
print('Good')
print('Goodbye\n')
输出:
>>>
1
当前变量值: 10
Good
当前变量值: 9
Good
当前变量值: 8
Good
当前变量值: 7
Good
当前变量值: 6
Goodbye
2
当前变量值: 10
Good
当前变量值: 9
Good
当前变量值: 8
Good
当前变量值: 7
Good
当前变量值: 6
Goodbye