leetcode 85. Maximal Rectangle

迈不过友情╰ 2022-08-21 03:14 257阅读 0赞

Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area.

  1. class Solution {
  2. void get_bigger(vector<vector<char>>& matrix, int leftupX, int leftupY, int&maxsquare)
  3. {
  4. int kxmin = -1; bool xup(true), yup(true);
  5. for (int ky = 0; ky + leftupY < matrix.size(); ky++)
  6. {
  7. if (matrix[ky + leftupY][leftupX] == '0')
  8. break;
  9. int kx = 0;
  10. while (leftupX + kx<matrix[0].size()&&matrix[ky + leftupY][leftupX + kx]=='1')
  11. kx++;
  12. kx--;
  13. if (kxmin == -1)
  14. kxmin = kx;
  15. if (kx < kxmin)
  16. kxmin = kx;
  17. if ((1 + kxmin)*(1 + ky)>maxsquare)
  18. maxsquare = (1 + kxmin)*(1 + ky);
  19. }
  20. }
  21. public:
  22. int maximalRectangle(vector<vector<char>>& matrix) {
  23. if (matrix.empty())
  24. return 0;
  25. if (matrix[0].empty())
  26. return 0;
  27. int maxarea = 0;
  28. for (int i = 0; i < matrix.size(); i++)
  29. for (int j = 0; j < matrix[0].size(); j++)
  30. {
  31. if (matrix[i][j] == '1')
  32. {
  33. get_bigger(matrix, j, i, maxarea);
  34. }
  35. }
  36. return maxarea;
  37. }
  38. };

accepted

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读