鱼C论坛

 找回密码
 立即注册
查看: 105|回复: 1

[已解决]遍历为什么最后多出一个

[复制链接]
发表于 2025-3-18 10:10:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

matrix = [[1, 2, 3, 4, 5],
          [5, 6, 7, 8, 9],
          [9, 10, 11, 12, 13],
          [1, 2, 3, 4, 5]]

top = 0
left = 0
right = len(matrix[0])
bottom = len(matrix)

t = []

while top <= bottom and left <= right:
    '从左往右遍历'
    if left <= right:
        for i in range(left, right):
            t.append(matrix[top][i])

    '从上往下遍历'
    if top < bottom:
        for i in range(top + 1, bottom):
            t.append(matrix[i][right - 1])

    '从右往左遍历'
    if left < right - 1:
        for i in range(right - 1, left, -1):
            t.append(matrix[bottom - 1][i - 1])

    '从下往上遍历'
    if top < bottom - 1:
        for i in range(bottom - 1, top + 1, -1):
            t.append(matrix[i - 1][left])
    '下一层'
    top += 1
    right -= 1
    bottom -= 1
    left += 1



最后多了个11是为什么
最佳答案
2025-3-18 10:10:12
你的代码似乎不完整,但从你的描述来看,你可能是在遍历一个矩阵(`matrix`),并且遇到了多出一个元素的问题。通常,这种问题可能是由于循环条件或索引计算错误导致的。

如果你是按照螺旋顺序遍历矩阵(即从左到右、从上到下、从右到左、从下到上),请检查以下几点:

1. **边界条件是否正确**:确保 `top`、`bottom`、`left` 和 `right` 在每次迭代后都正确更新,避免重复访问同一元素。
2. **循环终止条件**:如果 `while` 循环的条件不正确,可能会导致多访问一次某些元素。
3. **索引是否越界**:如果 `right = len(matrix)`,那么 `matrix[right]` 可能会超出范围,应该使用 `right = len(matrix) - 1`。

如果你能提供完整的代码,我可以更具体地帮你找出问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-18 10:10:12 | 显示全部楼层    本楼为最佳答案   
你的代码似乎不完整,但从你的描述来看,你可能是在遍历一个矩阵(`matrix`),并且遇到了多出一个元素的问题。通常,这种问题可能是由于循环条件或索引计算错误导致的。

如果你是按照螺旋顺序遍历矩阵(即从左到右、从上到下、从右到左、从下到上),请检查以下几点:

1. **边界条件是否正确**:确保 `top`、`bottom`、`left` 和 `right` 在每次迭代后都正确更新,避免重复访问同一元素。
2. **循环终止条件**:如果 `while` 循环的条件不正确,可能会导致多访问一次某些元素。
3. **索引是否越界**:如果 `right = len(matrix)`,那么 `matrix[right]` 可能会超出范围,应该使用 `right = len(matrix) - 1`。

如果你能提供完整的代码,我可以更具体地帮你找出问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-3 21:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表