[LeetCode]Max Sum of Rectangle No Larger Than K
2016-11-15 08:45
330 查看
public class Solution { public int maxSumSubmatrix(int[][] matrix, int k) { if (matrix == null || matrix[0].length == 0) return 0; int res = Integer.MIN_VALUE; for (int left = 0; left < matrix.length; left++) { int[] sums = new int[matrix[0].length]; for (int right = left; right < matrix.length; right++) { for (int i = 0; i < matrix[0].length; i++) sums[i] += matrix[right][i]; TreeSet<Integer> set = new TreeSet<>(); set.add(0); int curSum = 0; for (int sum : sums) { curSum += sum; // num是sums从0到某位置的和,那么curSum - num就是sums的0到i之中最符合要求的子序列 Integer num = set.ceiling(curSum - k); if (num != null) res = Math.max(res, curSum - num); set.add(curSum); } } } return res; } }
本题的关键是理解注释所在的循环, Kadane's algorithm和https://discuss.leetcode.com/topic/48875/accepted-c-codes-with-explanation-and-references都对于解本题有所帮助。
相关文章推荐
- Leetcode: Max Sum of Rectangle No Larger Than K
- LeetCode 363 Max Sum of Rectangle No Larger Than K (二分)
- [LeetCode] Max Sum of Rectangle No Larger Than K
- 【Leetcode】Max Sum of Rectangle No Larger Than K
- LeetCode 363:Max Sum of Rectangle No Larger Than K
- Leetcode Max Sum of Rectangle No Larger Than K
- [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
- LeetCode-Max Sum of Rectangle No Larger Than K
- leetCode_Max Sum of Rectangle No Larger Than K
- [leetcode-363]Max Sum of Rectangle No Larger Than K(java)
- leetcode(363):Max Sum of Rectangle No Larger Than K
- [TODO] LeetCode #363: Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- Max Sum of Rectangle No Larger Than K
- max-sum-of-sub-matrix-no-larger-than-k
- leetcode 363. Max Sum of Rectangle No Larger Than K