【LeetCode每日一题】1793. 好子数组的最大分数


1793. 好子数组的最大分数

在这里插入图片描述

思路:单调栈

1遍历数组,用单调栈来找到该位置左边比该位置小的数,存储进数组left中

2.清空栈,再找该位置右边比该位置小的数,存储进数组right中

3 遍历每个位置,计算以当前位置元素为中心时的得分,并找出最大得分。

代码:
class Solution {
    public int maximumScore(int[] nums, int k) {
        // 单调栈
        int n = nums.length;
        int[] left = new int[n];
        Deque<Integer> stack = new ArrayDeque<>();

        // 构建左边第一个比当前元素小的索引
        for (int i = 0; i < n; i++) {
            int x = nums[i];
            while (!stack.isEmpty() && x <= nums[stack.peek()]) {
                stack.pop();
            }
            left[i] = stack.isEmpty() ? -1 : stack.peek();
            stack.push(i);
        }
        
        stack.clear();
        int[] right = new int[n];
        // 构建右边第一个比当前元素小的索引
        for (int i = n - 1; i >= 0; i--) {
            int x = nums[i];
            while (!stack.isEmpty() && x <= nums[stack.peek()]) {
                stack.pop();
            }
            right[i] = stack.isEmpty() ? n : stack.peek();
            stack.push(i);
        }
        
        int ans = 0;
        // 计算每个位置得分并找出最大得分
        for (int i = 0; i < n; i++) {
            int min = nums[i];
            int l = left[i];
            int r = right[i];
            if (l < k && k < r) {
                ans = Math.max(ans, min * (r - l - 1));
            }
        }
        return ans;
    }
}

点击移步博客主页,欢迎光临~

偷cyk的图

相关推荐

  1. LeetCode每日[C++]-1793.分数

    2024-03-24 20:58:01       17 阅读
  2. LeetCode每日】53.

    2024-03-24 20:58:01       39 阅读
  3. 每日:求连续

    2024-03-24 20:58:01       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 20:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 20:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 20:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 20:58:01       18 阅读

热门阅读

  1. 小程序调用相机拍照上传

    2024-03-24 20:58:01       19 阅读
  2. python基础练习题5

    2024-03-24 20:58:01       17 阅读
  3. 学习AIGC大模型的步骤

    2024-03-24 20:58:01       18 阅读
  4. 【二进制计算,逆序,每位求和】

    2024-03-24 20:58:01       19 阅读
  5. Python从入门到精通秘籍十七

    2024-03-24 20:58:01       16 阅读
  6. 用C++做一个植物大战僵尸

    2024-03-24 20:58:01       22 阅读
  7. day9 嵌套排序,利用嵌套循环所写的简单时钟

    2024-03-24 20:58:01       16 阅读
  8. LLM推理及加速知识

    2024-03-24 20:58:01       16 阅读
  9. 蓝桥杯:数的分解

    2024-03-24 20:58:01       18 阅读
  10. Python下载音乐

    2024-03-24 20:58:01       23 阅读
  11. 扫雷(c++题解)

    2024-03-24 20:58:01       20 阅读
  12. golang通过参数控制HTTP server是否使用基本认证

    2024-03-24 20:58:01       19 阅读
  13. ZooKeeper

    ZooKeeper

    2024-03-24 20:58:01      18 阅读
  14. 前序、中序、后序遍历(非递归方法)

    2024-03-24 20:58:01       16 阅读