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

      

  • 相关阅读:
    Javascript 生成全局唯一标识符 (GUID,UUID)
    nginx 与location语法详解
    nginx的安装与使用
    Linux上python3的安装和使用
    Linux上Redis安装和简单操作
    MySQL + centos +主从复制
    web服务基础
    linux系统基础优化及高级操作命令
    vim编辑
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/midan/p/4681715.html
Copyright © 2011-2022 走看看