跳转至

631. 设计 Excel 求和公式 🔒

题目描述

请你设计 Excel 中的基本功能,并实现求和公式。

实现 Excel 类:

  • Excel(int height, char width):用高度 height 和宽度 width 初始化对象。该表格是一个大小为 height x width 的整数矩阵 mat,其中行下标范围是 [1, height] ,列下标范围是 ['A', width] 。初始情况下,所有的值都应该为
  • void set(int row, char column, int val):将 mat[row][column] 的值更改为 val
  • int get(int row, char column):返回 mat[row][column] 的值。
  • int sum(int row, char column, List<String> numbers):将 mat[row][column] 的值设为由 numbers 表示的单元格的和,并返回 mat[row][column] 的值。此求和公式应该 长期作用于 该单元格,直到该单元格被另一个值或另一个求和公式覆盖。其中,numbers[i] 的格式可以为:
    • "ColRow":表示某个单元格。
      • 例如,"F7" 表示单元格 mat[7]['F']
    • "ColRow1:ColRow2":表示一组单元格。该范围将始终为一个矩形,其中 "ColRow1" 表示左上角单元格的位置,"ColRow2" 表示右下角单元格的位置。
      • 例如,"B3:F7" 表示 3 <= i <= 7'B' <= j <= 'F' 的单元格 mat[i][j]

注意:可以假设不会出现循环求和引用。

  • 例如,mat[1]['A'] == sum(1, "B"),且 mat[1]['B'] == sum(1, "A")

 

示例 1:

输入:
["Excel", "set", "sum", "set", "get"]
[[3, "C"], [1, "A", 2], [3, "C", ["A1", "A1:B2"]], [2, "B", 2], [3, "C"]]
输出:
[null, null, 4, null, 6]

解释:
执行以下操作:
Excel excel = new Excel(3, "C");
 // 构造一个 3 * 3 的二维数组,所有值初始化为零。
 //   A B C
 // 1 0 0 0
 // 2 0 0 0
 // 3 0 0 0
excel.set(1, "A", 2);
 // 将 mat[1]["A"] 设置为 2 。
 //   A B C
 // 1 2 0 0
 // 2 0 0 0
 // 3 0 0 0
excel.sum(3, "C", ["A1", "A1:B2"]); // 返回 4
 // 将 mat[3]["C"] 设置为 mat[1]["A"] 的值与矩形范围的单元格和的和,该范围的左上角单元格位置为 mat[1]["A"] ,右下角单元格位置为 mat[2]["B"] 。
 //   A B C
 // 1 2 0 0
 // 2 0 0 0
 // 3 0 0 4
excel.set(2, "B", 2);
 // 将 mat[2]["B"] 设置为 2 。注意 mat[3]["C"] 也应该更改。
 //   A B C
 // 1 2 0 0
 // 2 0 2 0
 // 3 0 0 6
excel.get(3, "C"); // 返回 6

 

提示:

  • 1 <= height <= 26
  • 'A' <= width <= 'Z'
  • 1 <= row <= height
  • 'A' <= column <= width
  • -100 <= val <= 100
  • 1 <= numbers.length <= 5
  • numbers[i] 的格式为 "ColRow""ColRow1:ColRow2"
  • 最多会对 setgetsum 进行 100 次调用。

解法

方法一

1

1

1

1

评论