Submatrix Sum
2015-07-28 02:37
246 查看
Given an integer matrix, find a submatrix where the sum of numbers is zero. Your code should return the coordinate of the left-up and right-down number.
Example
Given matrix
return
Challenge
O(n3) time.
Thoughts:
If the matrix is Nx1, we can solve it easily like sum of contiguous subsequense. If it's Nx2, we just need to repeat the same process 3 times -- the first column, the second column and sum of the two columns as an Nx1 array. That's applicable to any cases. The key point is to traverse every possible combination of two columns with two for loops and calculate the sum of each columns and store them into a hashmap.
Code:
Example
Given matrix
[ [1 ,5 ,7], [3 ,7 ,-8], [4 ,-8 ,9], ]
return
[(1,1), (2,2)]
Challenge
O(n3) time.
Thoughts:
If the matrix is Nx1, we can solve it easily like sum of contiguous subsequense. If it's Nx2, we just need to repeat the same process 3 times -- the first column, the second column and sum of the two columns as an Nx1 array. That's applicable to any cases. The key point is to traverse every possible combination of two columns with two for loops and calculate the sum of each columns and store them into a hashmap.
Code:
public int[][] submatrixSum(int[][] matrix) { // Write your code here int[][] res = new int[2][2]; int m = matrix.length; if(m==0) return res; int n = matrix[0].length; for(int i=0;i<n;i++){ int[] sum = new int[m]; for(int j=i;j<n;j++){ for(int k=0;k<m;k++) sum[k]+=matrix[k][j]; //traverse every possible combination of indices of each column int lastSum=0; HashMap<Integer,Integer> map = new HashMap<>(); map.put(0,-1); for(int v=0;v<m;v++){ lastSum+=sum[v]; if(map.containsKey(lastSum)){ res[0][0]=map.get(lastSum)+1; res[0][1]=i; res[1][0]=v; res[1][1]=j; return res; } map.put(lastSum,v); } } } return res; }
相关文章推荐
- Django basic command
- [hdu5312]数的拆分,数学推导
- Delphi调用C#编写的WebService返回空值
- Leetcode #64 Minimum Path Sum
- JAVA笔记之数组
- redis做DB缓存mysql做冗余数据库,memcached主备存储session下的集群高可用方案
- ZOJ 3329 One Person Game 概率DP 好题
- 设计模式学习笔记十四:适配器模式
- 设计模式学习笔记十四:适配器模式
- CQU&CQUPT联合狂欢赛小结
- hive 安装报错“java.lang.NoClassDefFoundError: org/apache/thrift/TException”
- cocos2dx导入到eclipse出现"C/C++ Indexer". java.lang.NullPointerException
- 【vijos1066】弱弱的战壕 线段树
- 汉诺塔问题
- 学习Java的同学如何使自己个人电脑拥有良好的Java运行环境
- POJ_1511_Invitation Cards(最短路)
- Leetcode32 Longest Valid Parentheses
- 苹果论坛
- 苹果论坛
- 【Android游戏特效】项目实战