当前位置: 首页 > article >正文

【Leetcode 每日一题】2012. 数组美丽值求和

问题背景

给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums。对于每个下标 i ( 1 ≤ i ≤ n u m s . l e n g t h − 2 ) i(1 \le i \le nums.length - 2) i(1inums.length2) n u m s [ i ] nums[i] nums[i]美丽值 等于:

  • 2 2 2,对于所有 0 ≤ j < i 0 \le j \lt i 0j<i i < k ≤ n u m s . l e n g t h − 1 i \lt k \le nums.length - 1 i<knums.length1,满足 n u m s [ j ] < n u m s [ i ] < n u m s [ k ] nums[j] \lt nums[i] \lt nums[k] nums[j]<nums[i]<nums[k]
  • 1 1 1,如果满足 n u m s [ i − 1 ] < n u m s [ i ] < n u m s [ i + 1 ] nums[i - 1] \lt nums[i] \lt nums[i + 1] nums[i1]<nums[i]<nums[i+1],且不满足前面的条件
  • 0 0 0,如果上述条件全部不满足

返回符合 1 ≤ i ≤ n u m s . l e n g t h − 2 1 \le i \le nums.length - 2 1inums.length2 的所有 n u m s [ i ] nums[i] nums[i]美丽值的总和

数据约束

  • 3 ≤ n u m s . l e n g t h ≤ 1 0 5 3 \le nums.length \le 10 ^ 5 3nums.length105
  • 1 ≤ n u m s [ i ] ≤ 1 0 5 1 \le nums[i] \le 10 ^ 5 1nums[i]105

解题过程

主要的难点是理解这些数学表达式,实际上只要求出前缀最大值和后缀最小值,在遍历的过程中根据不同情况累计相应的值即可。
可以将求前后缀数组的过程优化到计算答案的循环中,但是时间性能没有数量级上的提升,就不单独写了。

具体实现

class Solution {
    public int sumOfBeauties(int[] nums) {
        int n = nums.length;
        int[] preMax = new int[n];
        int[] sufMax = new int[n];
        preMax[0] = nums[0];
        sufMax[n - 1] = nums[n - 1];
        for (int i = 1; i < n; i++) {
            preMax[i] = Math.max(preMax[i - 1], nums[i]);
        }
        for (int i = n - 2; i >= 0; i--) {
            sufMax[i] = Math.min(sufMax[i + 1], nums[i]);
        }
        int res = 0;
        for (int i = 1; i < n - 1; i++) {
            res += preMax[i - 1] < nums[i] && nums[i] < sufMax[i + 1] ? 2 : (nums[i - 1] < nums[i] && nums[i] < nums[i + 1] ? 1 : 0);
        }
        return res;
    }
}

http://www.kler.cn/a/583110.html

相关文章:

  • java 手搓一个http工具类请求传body
  • emacs使用mongosh的方便工具发布
  • 练习:关于静态路由,手工汇总,路由黑洞,缺省路由相关
  • [GHCTF 2025]UPUPUP【.htaccess绕过 XBM/WBMP】
  • 面试题(1)MySQL中的锁
  • UVC摄像头命令推流,推到rv1126里面去
  • Java基础入门流程控制全解析:分支、循环与随机数实战
  • 智慧社区管控大屏,人性化和科技感该如何平衡?
  • [算法] 判断是否为字符串重排(simple, 面试)
  • 我的创作纪念日:730天的技术写作之旅
  • PyTorch中torch.nn、torchsummary和torch.nn.functional库作用详解
  • ubuntu22查看系统版本
  • 使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图
  • Mysql高频八股——SQL语句的执行过程
  • 通过 **DeepSeek** 辅助生成接口测试用例
  • 基于Vue 3的智能支付二维码弹窗组件设计与实现
  • STC51 中断允许寄存器 IE
  • DOM与CSS:网页设计的核心力量
  • maven wrapper的使用
  • 嵌入式学习L6网络编程D5UDP编程