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

如何快速将二维数组每行的尾随零设置为整数X?

嘿,这个问题很好解决,核心思路就是先找到每行里最后一个非零元素的位置,然后把这个位置之后的所有尾随零都替换成你要的整数X就行。我给你用几种常用编程语言写了具体实现,你可以直接参考:

解决思路

首先明确“尾随零”的定义:每行末尾连续的零,中间穿插的零不算。所以关键步骤是:

  1. 遍历二维数组的每一行
  2. 从行尾往前找,定位到该行最后一个非零元素的下标
  3. 将该下标之后的所有元素(也就是所有尾随零)替换为目标整数X
  4. 如果整行都是零,那么所有元素都属于尾随零,全部替换为X
具体实现

Python 版本

def replace_trailing_zeros(matrix, X):
    for row in matrix:
        last_non_zero_idx = -1
        # 从后往前遍历,找到第一个非零元素的位置
        for idx in range(len(row)-1, -1, -1):
            if row[idx] != 0:
                last_non_zero_idx = idx
                break
        # 替换从last_non_zero_idx+1到末尾的所有元素为X
        for idx in range(last_non_zero_idx + 1, len(row)):
            row[idx] = X
    return matrix

# 测试用例
sample_matrix = [
    [1, 0, 2, 0, 0],
    [3, 4, 0, 0],
    [0, 5, 0],
    [0, 0, 0]  # 整行都是零,全部替换为X
]
result = replace_trailing_zeros(sample_matrix, 9)
for row in result:
    print(row)

说明:这个函数会原地修改输入的二维数组。如果不想改动原数组,可以先创建每行的副本再操作,比如把for row in matrix:改成for row in [r.copy() for r in matrix]:。

Java 版本

public class TrailingZeroReplacer {
    public static void replaceTrailingZeros(int[][] matrix, int target) {
        for (int[] row : matrix) {
            int lastNonZeroPos = -1;
            // 从行尾往前找最后一个非零元素
            for (int i = row.length - 1; i >= 0; i--) {
                if (row[i] != 0) {
                    lastNonZeroPos = i;
                    break;
                }
            }
            // 替换尾随零
            for (int i = lastNonZeroPos + 1; i < row.length; i++) {
                row[i] = target;
            }
        }
    }

    public static void main(String[] args) {
        int[][] testMatrix = {
            {1, 0, 2, 0, 0},
            {3, 4, 0, 0},
            {0, 5, 0},
            {0, 0, 0}
        };
        replaceTrailingZeros(testMatrix, 9);
        // 打印结果
        for (int[] row : testMatrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

说明:Java的数组是引用类型,这里的实现也是原地修改。如果需要保留原数组,可以先复制整个二维数组再进行替换操作。

额外注意点
  • 如果某一行没有尾随零(最后一个元素是非零值),函数不会对该行做任何修改,符合需求。
  • 对于全零的行,所有元素都会被替换为X,这是合理的,因为整行没有非零元素,所有零都属于尾随零。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:05:51