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

求助:统计含满足a+b=c的连续子数组的矩阵行数

排查矩阵符合条件行数统计的代码问题

嘿,我来帮你搞定这个问题!咱们先把核心需求再明确一遍:遍历矩阵的每一行,只要该行存在至少一组连续的三个元素a,b,c(位置为i、i+1、i+2)满足a+b=c,就把这一行计入统计——哪怕一行里有N组符合条件的子数组,也只算1次。目标是输出2,但你的代码肯定是在某个环节踩坑了,我来给你拆解常见错误和正确实现。

常见的代码错误点

我先猜几个你可能犯的错,看看是不是中了:

  • 重复计数:找到一行里的第一个符合条件的子数组后,没有立刻终止该行的遍历,导致后续找到的符合项会让计数多加,比如一行有3个符合项,结果被算成3次而不是1次。
  • 索引越界:循环的时候没控制范围,比如遍历到了行的最后一个元素,导致i+2超出数组长度,直接报错或者取到错误值。
  • 没有标记行状态:没有用一个变量记录当前行是否已经符合条件,而是每找到一个符合项就直接给计数加1,这就会导致重复统计同一行。

正确实现示例(以Python为例)

假设你的目标矩阵是类似这样的(只有2行符合条件):

# 示例矩阵:第1行[1,2,3,4]有1+2=3,第4行[7,1,8,9]有7+1=8,共2行符合
target_matrix = [[1,2,3,4], [5,4,9,2], [2,3,6,6], [7,1,8,9]]

下面是正确的统计代码:

count = 0
for row in target_matrix:
    # 标记当前行是否符合条件,初始为False
    is_valid_row = False
    # 跳过长度不足3的行(根本凑不出三个连续元素)
    if len(row) < 3:
        continue
    # 遍历到倒数第三个元素就停止,避免i+2越界
    for i in range(len(row) - 2):
        a, b, c = row[i], row[i+1], row[i+2]
        if a + b == c:
            is_valid_row = True
            # 找到一个就立刻跳出当前行的循环,不用再找了
            break
    # 如果该行符合条件,计数加1
    if is_valid_row:
        count += 1

print(count)  # 输出:2,符合预期

关键细节解释

  1. 行状态标记:用is_valid_row变量记录当前行是否已经找到符合条件的子数组,这样不管一行里有多少个符合项,最终只会给计数加1。
  2. 循环范围控制:range(len(row)-2)确保我们最多遍历到行的倒数第三个元素,这样i+2永远不会超出数组的索引范围。
  3. 提前终止遍历:找到第一个符合条件的子数组后就break该行的循环,既提升了代码效率,也避免了重复判断。

如果你的代码是其他语言(比如Java、C++),核心逻辑也是一样的:用一个布尔变量标记行状态,控制遍历范围,找到符合项后立刻终止当前行的检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:10:41