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

      

  • 相关阅读:
    常用FPGA功能块记录
    鸿蒙相关
    微波相关
    Python库大全
    C#环境实现代码的自动生成编译
    STM32相关
    硬件相关
    C# 获取枚举中文注释
    C# 获取自定义特性值
    Asp.Net Core 中 Host 与 WebHost的区别
  • 原文地址:https://www.cnblogs.com/midan/p/4681715.html
Copyright © 2011-2022 走看看