zoukankan      html  css  js  c++  java
  • Submatrix Sum

    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

    [
      [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;
            }
    

      

  • 相关阅读:
    日程管理系统找Bug
    #单元测试
    读后感
    四则运算
    事后诸葛亮会议
    数据流图和数据流程图
    时序图
    ER图
    uml用例图
    第一迭代感想
  • 原文地址:https://www.cnblogs.com/midan/p/4681715.html
Copyright © 2011-2022 走看看