当前位置:   article > 正文

力扣1793.好子数组的最大分数

力扣1793.好子数组的最大分数

力扣1793.好子数组的最大分数

  • 在这里插入图片描述

    • 对于每个数 求其左右两侧小于它高度的元素下标(单调栈)
  •   class Solution {
      public:
          int maximumScore(vector<int>& nums, int k) {
              int n = nums.size();
              vector<int> left(n,-1);
              stack<int> st;
              for(int i=0;i<n;i++)
              {
                  while(!st.empty()&& nums[i] <= nums[st.top()])
                      st.pop();
                  if(!st.empty())
                      left[i] = st.top();
                  st.emplace(i);
              }
              vector<int> right(n,n);
              //清空st
              st = stack<int> ();
              for(int i=n-1;i>=0;i--)
              {
                  while(!st.empty()&& nums[i] <= nums[st.top()])
                      st.pop();
                  if(!st.empty())
                      right[i] = st.top();
                  st.emplace(i);
              }
      
              int res=0;
              for(int i=0;i<n;i++)
              {
                  int h = nums[i],l = left[i],r = right[i];
                  if(l<k && k<r)
                      res = max(res,h * (r - l - 1));
              }
              return res;
          }
      };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/756642
推荐阅读
相关标签
  

闽ICP备14008679号