From dc1f0c4c0096013799416664894c5194dc7e1f52 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/solutions/leetcode/cpp/304.cpp | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 store/works/solutions/leetcode/cpp/304.cpp (limited to 'store/works/solutions/leetcode/cpp/304.cpp') diff --git a/store/works/solutions/leetcode/cpp/304.cpp b/store/works/solutions/leetcode/cpp/304.cpp new file mode 100644 index 0000000..ab22281 --- /dev/null +++ b/store/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