windows的USB外接裝置啟用禁用的C++實現
阿新 • • 發佈:2021-08-03
題目連結:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/submissions/
題目描述:
題解:
class Solution { public: int largestRectangleArea(vector<int>& heights) { vector<int> minLeft(heights.size(), 0); vector<int> minRight(heights.size(), 0); //記錄每個節點左邊第一個小於當前節點的下標 minLeft[0] = -1; for(int i = 1; i < heights.size(); i++) { int t = i -1; while(t >= 0 && heights[t] > heights[i]) { t = minLeft[t]; } minLeft[i] = t; } //記錄每個節點右邊第一個小於當前節點的下標 minRight[heights.size() - 1] = heights.size(); for(int i = heights.size() - 2; i >= 0; i--) { int t = i + 1; while(t < heights.size() && heights[t] >= heights[i]) { t = minRight[t]; } minRight[i] = t; } int result = 0; for(int i = 0; i < heights.size(); i++) { int sum = heights[i] * (minRight[i] - minLeft[i] - 1); result = max(sum, result); } return result; } };