[Java/Python 3] Find the max width and height.
Q & A\nQ1: Can you explain (in Java) why 1L is multiplied, and why without it the Test Case is failing?\nA1: 1L is long type. We have to change the expression t
**Q & A**\nQ1: Can you explain (in Java) why 1L is multiplied, and why without it the Test Case is failing?\nA1: 1L is `long` type. We have to change the expression to `long` type to avoid `int` overflow.\nQ2: why the modulo?\nA2: By problem "Since the answer can be a huge number, return this modulo 10^9 + 7.".\n**End of Q & A**\n\n```java\n    public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {\n        Arrays.sort(horizontalCuts); \n        Arrays.sort(verticalCuts); \n        int m = horizontalCuts.length, n = verticalCuts.length, \n            H = Math.max(horizontalCuts[0], h - horizontalCuts[m - 1]), \n            V = Math.max(verticalCuts[0], w - verticalCuts[n - 1]);\n        for (int i = 1; i < horizontalCuts.length; ++i) {\n            H = Math.max(H, horizontalCuts[i] - horizontalCuts[i - 1]);\n        }\n        for (int i = 1; i < verticalCuts.length; ++i) {\n            V = Math.max(V, verticalCuts[i] - verticalCuts[i - 1]);\n        }\n        return (int)(H * 1L * V % 1_000_000_007);\n    }\n```\n\n```python\n    def maxArea(self, h: int, w: int, hCuts: List[int], vCuts: List[int]) -> int:\n        hCuts.sort()\n        vCuts.sort()\n        H, V = max(hCuts[0], h - hCuts[-1]), max(vCuts[0], w - vCuts[-1])\n        for i in range(1, len(hCuts)):\n            H = max(H, hCuts[i] - hCuts[i - 1])\n        for i in range(1, len(vCuts)):\n            V = max(V, vCuts[i] - vCuts[i - 1])\n        return H * V % 1000000007\n```\n\n**Analysis:**\n\nTime: `O(mlogm + nlogn)`, space: `O(m + n)` - including sorting space, where `m = horizontalCuts.length, n = verticalCuts.length`.
[]