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

如何判断指定数字是否存在于矩阵的所有列中?

嘿,这个需求其实很好实现,我来给你拆解思路,再附上几个实用的代码示例,保证你一看就懂~

核心思路拆解

咱们的目标是确认指定数字在矩阵的每一列都至少出现一次,核心逻辑可以拆成这几步:

  1. 要么把矩阵的「列」转换成「行」(也就是矩阵转置),这样就能像遍历普通行一样遍历每一列;
  2. 要么直接按列的索引去遍历原矩阵,逐个检查每一列;
  3. 只有当所有列都包含目标数字时,才返回True,只要有一列不满足,直接返回False。

Python 实现示例

方法一:用转置+内置函数(简洁高效)

这种方法利用Python的内置特性,代码非常简洁,适合日常开发:

def check_number_in_every_column(matrix, target):
    # 转置矩阵:zip(*matrix)会把原矩阵的列转成元组,转成列表方便后续操作
    transposed_matrix = list(zip(*matrix))
    # all()函数会确保所有列都包含目标数字,只要有一列不满足就返回False
    return all(target in column for column in transposed_matrix)

# 测试用例
sample_matrix = [
    [1, 2, 3],
    [4, 5, 1],
    [7, 1, 9]
]
print(check_number_in_every_column(sample_matrix, 1))  # 输出True,每一列都有1
print(check_number_in_every_column(sample_matrix, 2))  # 输出False,第二、三列没有2

方法二:手动按列遍历(适合理解底层逻辑)

如果你想搞清楚底层是怎么运行的,或者不想用转置操作,可以手动遍历每一列的索引:

def check_number_in_every_column(matrix, target):
    # 先处理空矩阵的边界情况
    if not matrix or not matrix[0]:
        return False
    
    total_columns = len(matrix[0])
    total_rows = len(matrix)
    
    # 遍历每一列的索引
    for col_idx in range(total_columns):
        column_has_target = False
        # 遍历当前列的每一行
        for row_idx in range(total_rows):
            if matrix[row_idx][col_idx] == target:
                column_has_target = True
                break  # 找到目标就不用继续遍历当前列了
        # 如果当前列没有目标,直接返回False
        if not column_has_target:
            return False
    
    # 所有列都包含目标,返回True
    return True

# 用同样的测试用例验证
sample_matrix = [
    [1, 2, 3],
    [4, 5, 1],
    [7, 1, 9]
]
print(check_number_in_every_column(sample_matrix, 1))  # True
print(check_number_in_every_column(sample_matrix, 2))  # False

额外说明

  • 如果你的矩阵是不规则的(比如各行的长度不一样),记得先做边界检查,比如统一列数或者在遍历的时候判断当前行的长度是否大于列索引,避免出现索引越界的错误;
  • 这个思路不止适用于Python,换成其他语言逻辑也是一样的:比如JavaScript可以用map方法转置矩阵,Java可以用嵌套循环按列访问元素,核心都是检查每一列是否包含目标数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:08:35