|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
nums = [2, 7, 11, 15]
target = 9
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums[i] + nums[j] == target:
print([i, j])
我记得len是查元素个数的啊,按我的意思n只是=4罢了,但是这是小甲鱼的课后作业答案,我没搞懂,请大神指点
本帖最后由 jackz007 于 2021-1-18 01:16 编辑
n = len(nums) = 4 控制循环次数,索引列表元素
这一句将使循环运行 4 次,i 的值将依次为 0、1、2、3。恰好可以索引到 nums 中的每个元素,你说它的作用重不重要?
- nums = [2, 7, 11, 15]
- target = 9
- n = len(nums) # n = 4,列表 nums 中的元素数量
- for i in range(n): # 从索引 0 开始,通过索引 i 向后遍历列表 nums 中的各个元素
- for j in range(i + 1 , n): # 从索引 i + 1 开始,通过索引 j 向后遍历列表 nums 中的各个元素,这样,i 与 j 永远不会相等。
- if nums[i] + nums[j] == target: # 如果当前枚举到的 nums 两个元素之和与目标数相等
- print([i, j]) # 那就把它们打印出来
复制代码
这个代码存在缺陷,当 i = n - 1 = len(nums) - 1 的时候,j = i + 1 = len(nums) , 这时,nums[j] 会下标越界的。
必须把这一句改掉
改为
|
|