LeetCode-Maximal Rectangle[code]
2014-10-13 18:59
169 查看
code:
#include <iostream> #include <vector> #include <stack> #include <algorithm> using namespace std; class Solution { public: int largestRectangleArea(vector<int> &height) { height.push_back(0); int i = 0; int result = 0; stack<int> s; while (i < height.size()) { if (s.empty() || height[i]>height[s.top()]) s.push(i++); else { int tmp = s.top(); s.pop(); result = max(result, height[tmp] * (s.empty() ? i : i - s.top() - 1)); } } return result; } int maximalRectangle(vector<vector<char> > &matrix) { if (matrix.size() == 0 || matrix[0].size() == 0) return 0; int H = matrix.size(), W = matrix[0].size(); int ret = 0; int **tmpHeight = new int*[H]; for (int i = 0; i < H; i++) { tmpHeight[i] = new int[W]; } for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { if (matrix[i][j] == '0') { tmpHeight[i][j] = 0; } else { tmpHeight[i][j] = (i == 0 ? 1 : tmpHeight[i - 1][j] + 1); } } } for (int i = 0; i < H; i++) { vector<int> vtmp(tmpHeight[i], tmpHeight[i] + W); ret = max(ret, largestRectangleArea(vtmp)); } return ret; } }; int main() { vector<vector<char>> v; char a1[] = { '0', '1', '0', '1', '1'}; char a2[] = { '0', '1', '1', '1', '0' };//要用'1'和'0'来赋值!因为是char数组!不能用1,0 ! char a3[] = { '1', '1', '1', '1','1' }; v.push_back(vector<char>(a1, a1 + 5)); v.push_back(vector<char>(a2, a2 + 5)); v.push_back(vector<char>(a3, a3 + 5)); Solution s; cout << s.maximalRectangle(v) << endl; return 0; }
相关文章推荐
- leetcode 日经贴,python code -Remove Element
- LeetCode Gray Code
- 【Leetcode】Binary Tree Preorder Traversal (Tree Traversal) (转自Code_Ganker)
- LeetCode Gray Code
- LeetCode_2_AddTwoNumbers(Java Code)
- 排颜色问题——数组 leetcode lintcode
- lintcode/leetcode由易至难第17题:Counting Bits
- leetcode GrayCode C++
- LeetCode Gray Code
- lintcode/leetcode由易至难第11题:Same Tree
- LeetCode Gray Code
- 【leetcode】gray-code
- 【Leetcode】Binary Tree Postorder Traversal (Tree Traversal)(转自Code_Ganker)
- [LeetCode-Algorithms-89] "Gray Code" (2017.12.26-WEEK17)
- leetcode 日经贴,python code - 3sumClosest
- leetcode 日经贴,python code -Symmetric Tree
- lintcode/leetcode由易至难第7题:Distribute Candies
- 【Leetcode】Binary Tree Inorder Traversal (Tree Traversal)(转自Code_Ganker)
- leetcode——Gray Code
- lintcode/leetcode由易至难第19题:Teemo Attacking