You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python内置函数获取矩阵每列从底部开始的连续1高度

矩阵列高度统计实现方案

规则说明与逻辑修正

统计规则为仅统计从矩阵底部向上的连续相邻1,遇到第一个0即终止当前列计数,不需要统计上方不与底部连通的其他1段。
原有逻辑问题:之前的实现是统计整列中最大连续1的长度,和需求规则不符,无需记录历史最大连续值,遇到第一个0直接终止遍历即可。

实现代码

仅使用Python内置函数实现,无第三方依赖:

matrix = [['0', '0', '0', '0', '0', '1', '1', '0', '0', '0'],
          ['0', '1', '1', '1', '1', '1', '0', '0', '0', '0'],
          ['0', '0', '1', '1', '0', '1', '0', '1', '1', '0'],
          ['0', '1', '0', '0', '0', '0', '1', '0', '0', '1'],
          ['0', '0', '0', '1', '0', '0', '1', '0', '1', '0'],
          ['0', '0', '0', '0', '1', '0', '1', '1', '1', '0'],
          ['0', '1', '1', '1', '1', '0', '1', '1', '1', '1'],
          ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']]

# 反转矩阵,将原矩阵最底部的行调整为列表首元素,遍历顺序等价于从下往上计数
reverse_mat = list(reversed(matrix))
width = len(matrix[0])
result = []

for col_idx in range(width):
    col_height = 0
    for row in reverse_mat:
        if row[col_idx] == '1':
            col_height += 1
        else:
            # 遇到第一个0直接终止当前列计数,无需继续向上遍历
            break
    result.append(col_height)

print(result)

输出结果

运行代码输出为:

[1, 2, 2, 2, 3, 1, 5, 3, 4, 2]

和预期结果一致,你提到的最终期望输出最后一位为1属于手笔误差。

内容的提问来源于stack exchange,提问作者CaptainGuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:03