From f8d4dd6131c30de4e8843e77baed8d07378e436c Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 2 Mar 2021 20:18:28 +0800 Subject: import(solutions): Add leetcode 304. --- works/solutions/leetcode/cpp/304.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 works/solutions/leetcode/cpp/304.cpp (limited to 'works') diff --git a/works/solutions/leetcode/cpp/304.cpp b/works/solutions/leetcode/cpp/304.cpp new file mode 100644 index 0000000..ab22281 --- /dev/null +++ b/works/solutions/leetcode/cpp/304.cpp @@ -0,0 +1,35 @@ +#include + +using std::vector; + +class NumMatrix { +private: + std::vector> prefix_sum_; + +public: + NumMatrix(vector> &matrix) + : prefix_sum_( + matrix.size() + 1, + std::vector(matrix.empty() ? 1 : matrix.front().size() + 1)) { + const int row_count = matrix.size(); + const int col_count = matrix.empty() ? 0 : matrix.front().size(); + + for (int i = 0; i < row_count; i++) + for (int j = 0; j < col_count; j++) { + prefix_sum_[i + 1][j + 1] = prefix_sum_[i][j + 1] + + prefix_sum_[i + 1][j] - prefix_sum_[i][j] + + matrix[i][j]; + } + } + + int sumRegion(int row1, int col1, int row2, int col2) { + return prefix_sum_[row1][col1] - prefix_sum_[row2 + 1][col1] - + prefix_sum_[row1][col2 + 1] + prefix_sum_[row2 + 1][col2 + 1]; + } +}; + +/** + * Your NumMatrix object will be instantiated and called as such: + * NumMatrix* obj = new NumMatrix(matrix); + * int param_1 = obj->sumRegion(row1,col1,row2,col2); + */ \ No newline at end of file -- cgit v1.2.3