小F的矩阵值调整 | 豆包MarsCode AI刷题

70 阅读3分钟

问题描述

小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数,则该值变为它的三倍;如果是奇数,则保持不变。小F想知道调整后的矩阵是什么样子的。

问题理解

需要处理一个矩阵,矩阵中的每个元素根据其奇偶性进行不同的操作:

  • 如果元素是偶数,将其值变为原来的三倍。
  • 如果元素是奇数,保持其值不变。
  • 通过遍历矩阵的每一个元素,并根据其奇偶性进行相应的操作,就可以得到更新后的矩阵。这个过程可以通过嵌套的循环来实现。

数据结构选择

  • 输入是一个二维列表(矩阵)。
  • 输出也是一个二维列表(处理后的矩阵)。

算法步骤

  1. 函数定义

    • def solution(a: list) -> list::定义了一个名为 solution 的函数,它接受一个二维列表 a 作为参数,并返回一个二维列表。
  2. 初始化结果矩阵

    • result = []:创建一个空的列表 result,用于存储处理后的矩阵。这个列表将在后续的循环中逐步填充每一行经过处理后的元素。
  3. 遍历矩阵的行和元素

    • 外层循环 for row in a::遍历输入矩阵 a 的每一行。对于每一行,会创建一个新的空列表 new_row,用于存储该行经过处理后的元素。
    • 内层循环 for element in row::遍历当前行 row 中的每一个元素。在这个循环中,会检查每个元素的奇偶性并进行相应处理。
  4. 根据奇偶性处理元素

    • if element % 2 == 0::通过取余运算判断元素是否为偶数。如果是偶数,执行 new_row.append(element * 3),即将该元素的值变为原来的三倍后添加到当前行的新列表 new_row 中。
    • else::如果元素不是偶数(即为奇数),执行 new_row.append(element),保持该元素的值不变并添加到 new_row 中。
  5. 更新结果矩阵

    • result.append(new_row):在完成当前行所有元素的处理后,将处理好的行 new_row 添加到结果矩阵 result 中。
  6. 返回结果矩阵

    • return result:在遍历完输入矩阵的所有行并完成处理后,返回最终得到的处理后的矩阵 result

代码人生

def solution(a: list) -> list:
    # 创建一个新的矩阵来存储更新后的值
    result = []
    
    # 遍历矩阵的每一行
    for row in a:
        new_row = []
        # 遍历当前行的每一个元素
        for element in row:
            # 检查元素的奇偶性
            if element % 2 == 0:
                # 如果是偶数,将其值变为原来的三倍
                new_row.append(element * 3)
            else:
                # 如果是奇数,保持不变
                new_row.append(element)
        # 将更新后的行添加到结果矩阵中
        result.append(new_row)
    
    # 返回更新后的矩阵
    return result

if __name__ == '__main__':
    print(solution([[1, 2, 3], [4, 5, 6]]) == [[1, 6, 3], [12, 5, 18]])
    print(solution([[7, 8, 9], [10, 11, 12]]) == [[7, 24, 9], [30, 11, 36]])
    print(solution([[2, 4], [6, 8]]) == [[6, 12], [18, 24]])

测试样例

样例1:

输入:a = [[1, 2, 3], [4, 5, 6]]
输出:[[1, 6, 3], [12, 5, 18]]

样例2:

输入:a = [[7, 8, 9], [10, 11, 12]]
输出:[[7, 24, 9], [30, 11, 36]]

样例3:

输入:a = [[2, 4], [6, 8]]
输出:[[6, 12], [18, 24]]