区域和检索 - 数组不可变
| class NumArray { |
| |
| private int[] preSum; |
| |
| public NumArray(int[] nums) { |
| preSum = new int[nums.length + 1]; |
| for(int i = 1; i < preSum.length; i++) { |
| preSum[i] = preSum[i - 1] + nums[i - 1]; |
| } |
| } |
| |
| public int sumRange(int left, int right) { |
| return preSum[right + 1] - preSum[left]; |
| } |
| } |
二维区域和检索 - 矩阵不可变
| class NumMatrix { |
| |
| private int[][] preSum; |
| |
| public NumMatrix(int[][] matrix) { |
| int m = matrix.length, n = matrix[0].length; |
| if (m == 0 || n == 0) return; |
| preSum = new int[m + 1][n + 1]; |
| for (int i = 1; i <= m; i++) { |
| for (int j = 1; j <= n; j++) { |
| preSum[i][j] = preSum[i - 1][j] + preSum[i][j - 1] - preSum[i - 1][j - 1] + matrix[i - 1][j - 1]; |
| } |
| } |
| } |
| |
| public int sumRegion(int row1, int col1, int row2, int col2) { |
| return preSum[row2 + 1][col2 + 1] - preSum[row1][col2 + 1] - preSum[row2 + 1][col1] + preSum[row1][col1]; |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义