LeetCode Question - 1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts π°
About the Series
Problem-solving is a key skill set for any tech-related stuff you might be working on.
When it comes to developers it's one of the most crucial skills which is needed in almost any day-to-day code you might be writing.
So, this series of blogs is all about practicing Daily LeetCode Challenges & Problem-solving. π
Problem Statement
Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts π°
You are given a rectangular cake of size
h x wand two arrays of integershorizontalCutsandverticalCutswhere:
horizontalCuts[i]is the distance from the top of the rectangular cake to theithhorizontal cut and similarly, and
verticalCuts[j]is the distance from the left of the rectangular cake to thejthvertical cut.
Return the maximum area of a piece of cake after you cut at each horizontal and vertical position provided in the arrays
horizontalCutsandverticalCuts. Since the answer can be a large number, return thismodulo 109 + 7
Video Explanation
Solution
Algorithm
- Push 0andhin thehorizontalCuts.
- Sort the horizontalCutsarray in Ascending Order.
- Take the maximum difference between the cuts by iterating on the list of horizontalCuts
- Push 0andhin thehorizontalCuts.
- Sort the horizontalCutsarray in Ascending Order.
- Take the maximum difference between the cuts by iterating on the list of horizontalCuts
- Multiply both the max values and return the modulo 10^9 + 7
- Now, we got the largest piece of Cake π°
Code in JS π§βπ»
/**
 * @param {number} h
 * @param {number} w
 * @param {number[]} horizontalCuts
 * @param {number[]} verticalCuts
 * @return {number}
 */
var maxArea = function (h, w, horizontalCuts, verticalCuts) {
  horizontalCuts.push(0, h);
  horizontalCuts.sort((a, b) => a - b);
  var maxH = 0;
  verticalCuts.push(0, w);
  verticalCuts.sort((a, b) => a - b);
  var maxW = 0;
 
  for (var i = 1; i < horizontalCuts.length; i++) {
    maxH = Math.max(maxH, horizontalCuts[i] - horizontalCuts[i - 1]);
  }
 
  for (var j = 1; j < verticalCuts.length; j++) {
    maxW = Math.max(maxW, verticalCuts[j] - verticalCuts[j - 1]);
  }
 
  return (BigInt(maxH) * BigInt(maxW)) % BigInt(1e9 + 7);
};Time Complexity : O(nlogn)
Space Complexity: O(1)
You can find me on the web π
Add your solution or approach in the comments below.
Show your love by Sharing the blog. π€
βThe best way to predict the future is to create it.β
~ Peter Drucker
