Java solution with approach
Approach:\n\n1. Traverse the matrix column wise\n2. For every column, calculate the continuous running sum and update the array itself. If any cell value is 0, 
**Approach:**\n\n1. Traverse the matrix column wise\n2. For every column, calculate the continuous running sum and update the array itself. If any cell value is 0, reset the continuous sum to 0\n3. Next traverse the matrix row wise, and sort every row in decsending order\n4. Calculate the maximum area greedily and store the maxArea\n\n**Java solution:**\n\n```\nclass Solution {\n    public int largestSubmatrix(int[][] matrix) {\n        \n        int rows = matrix.length, cols = matrix[0].length, maxArea = 0;\n        \n        for(int j=0, contsum = 0; j<cols; ++j, contsum=0) \n            for(int i=0; i<rows; ++i) {\n                if(matrix[i][j] == 0) {\n                    contsum=0;\n                    continue;\n                }\n                \n                ++contsum;\n                matrix[i][j] = contsum;\n            }\n        \n        for(int i=0; i<rows; ++i) {\n            \n            List<Integer> tempList = new ArrayList<>(cols);\n            \n            for(int j=0; j<cols; ++j)\n                tempList.add(matrix[i][j]);\n            \n            Collections.sort(tempList, (a, b) -> b-a);\n            \n            for(int j=0; j<cols; ++j) \n                maxArea = Math.max(maxArea, (j+1)*tempList.get(j));\n            \n        }\n        \n        return maxArea;\n    }\n}\n```\n\n**Time Complexity:** O(rows * columns * log (columns))\n**Space Complexity:** O(columns) for the temporary list for sorting\n\nThank you\n\nDo upvote the solution if you have liked it!\n\n
['Greedy', 'Sorting', 'Simulation']