LC: 631. Design Excel Sum Formula
https://leetcode.com/problems/design-excel-sum-formula/
631. Design Excel Sum Formula
Design the basic function of Excel and implement the function of the sum formula.
Implement the Excel class:
Excel(int height, char width)Initializes the object with theheightand thewidthof the sheet. The sheet is an integer matrixmatof sizeheight x widthwith the row index in the range[1, height]and the column index in the range['A', width]. All the values should be zero initially.void set(int row, char column, int val)Changes the value atmat[row][column]to beval.int get(int row, char column)Returns the value atmat[row][column].int sum(int row, char column, List<String> numbers)Sets the value atmat[row][column]to be the sum of cells represented bynumbersand returns the value atmat[row][column]. This sum formula should exist until this cell is overlapped by another value or another sum formula.numbers[i]could be on the format:"ColRow"that represents a single cell.For example,
"F7"represents the cellmat[7]['F'].
"ColRow1:ColRow2"that represents a range of cells. The range will always be a rectangle where"ColRow1"represent the position of the top-left cell, and"ColRow2"represents the position of the bottom-right cell.For example,
"B3:F7"represents the cellsmat[i][j]for3 <= i <= 7and'B' <= j <= 'F'.
Note: You could assume that there will not be any circular sum reference.
For example,
mat[1]['A'] == sum(1, "B")andmat[1]['B'] == sum(1, "A").
Example 1:
Input
["Excel", "set", "sum", "set", "get"]
[[3, "C"], [1, "A", 2], [3, "C", ["A1", "A1:B2"]], [2, "B", 2], [3, "C"]]
Output
[null, null, 4, null, 6]
Explanation
Excel excel = new Excel(3, "C");
// construct a 3*3 2D array with all zero.
// A B C
// 1 0 0 0
// 2 0 0 0
// 3 0 0 0
excel.set(1, "A", 2);
// set mat[1]["A"] to be 2.
// A B C
// 1 2 0 0
// 2 0 0 0
// 3 0 0 0
excel.sum(3, "C", ["A1", "A1:B2"]); // return 4
// set mat[3]["C"] to be the sum of value at mat[1]["A"] and the values sum of the rectangle range whose top-left cell is mat[1]["A"] and bottom-right cell is mat[2]["B"].
// A B C
// 1 2 0 0
// 2 0 0 0
// 3 0 0 4
excel.set(2, "B", 2);
// set mat[2]["B"] to be 2. Note mat[3]["C"] should also be changed.
// A B C
// 1 2 0 0
// 2 0 2 0
// 3 0 0 6
excel.get(3, "C"); // return 6Constraints:
1 <= height <= 26'A' <= width <= 'Z'1 <= row <= height'A' <= column <= width-100 <= val <= 1001 <= numbers.length <= 5numbers[i]has the format"ColRow"or"ColRow1:ColRow2".At most
100calls will be made toset,get, andsum.
631. Design Excel Sum Formula:
The Essence:
Bei der Berechnung des Wertes jeder Zelle gibt es 2 Möglichkeiten:
Die Zelle hat nur einen Wert.
Die Zelle zeigt auf eine Menge von Zellen bzw: Rechtecken. Die Methode set() aktualisiert den Wert einer Zelle zur einer Zahl. Die Methode sum() aktualisiert den Wert einer Zelle zu einer Sammlung von Zellen. Um den Wert der 2. Zelltyp zu erhalten, versuchen wir den Wert jeder Zelle/jedes Rechtecks zu berechnen, auf die sie zeigen.
Details:
Eine ausführliche Erläuterung und die Umsetzung entnehmen Sie bitte dem entsprechenden PR.
Solutions:
Default Code:
Last updated