Skip to content

Latest commit

 

History

History

0631.Design Excel Sum Formula

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

English Version

题目描述

请你设计 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 次调用。

解法