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

蓝桥每日打卡--数组美丽值求和

#蓝桥#JAVA#数组美丽值求和

题目描述

给你一个下标从 0 开始的整数数组 nums 。对于每个下标 i1 <= i <= nums.length - 2),nums[i] 的 美丽值 等于:

  • 2,对于所有 0 <= j < i 且 i < k <= nums.length - 1 ,满足 nums[j] < nums[i] < nums[k]
  • 1,如果满足 nums[i - 1] < nums[i] < nums[i + 1] ,且不满足前面的条件
  • 0,如果上述条件全部不满足

返回符合 1 <= i <= nums.length - 2 的所有 nums[i] 的 美丽值的总和 。

示例

示例 1:

输入:nums = [1,2,3]
输出:2
解释:对于每个符合范围 1 <= i <= 1 的下标 i :
- nums[1] 的美丽值等于 2

示例 2:

输入:nums = [2,4,6,4]
输出:1
解释:对于每个符合范围 1 <= i <= 2 的下标 i :
- nums[1] 的美丽值等于 1
- nums[2] 的美丽值等于 0

示例 3:

输入:nums = [3,2,1]
输出:0
解释:对于每个符合范围 1 <= i <= 1 的下标 i :
- nums[1] 的美丽值等于 0

解题思路

通过两次遍历数组来确定每个元素的美丽值。 

第一次遍历:从左至右遍历数组,记录每个元素左侧的最大值。若当前元素大于左侧最大值,则标记该元素可能有美丽值 2。

第二次遍历:从右至左遍历数组,记录每个元素右侧的最小值。结合第一次遍历的标记,判断当前元素是否满足美丽值为 2 的条件;若不满足,再判断是否满足美丽值为 1 的条件。累加所有元素的美丽值得到最终结果。

class Solution {
    public int sumOfBeauties(int[] nums) {
        int n = nums.length;
        // 创建一个长度为 n 的数组 state,用于标记每个元素是否可能有美丽值 2
        int[] state = new int[n];
        // 初始化 pre_max 为数组的第一个元素,用于记录当前元素左侧的最大值
        int pre_max = nums[0];
        // 从第二个元素开始遍历数组,直到倒数第二个元素
        for (int i = 1; i < n - 1; i++) {
            // 如果当前元素大于左侧最大值
            if (nums[i] > pre_max) {
                // 标记该元素可能有美丽值 2
                state[i] = 1;
                // 更新左侧最大值为当前元素
                pre_max = nums[i];
            }
        }
        // 初始化 suf_min 为数组的最后一个元素,用于记录当前元素右侧的最小值
        int suf_min = nums[n - 1];
        // 初始化结果变量 res 为 0,用于累加所有元素的美丽值
        int res = 0;
        // 从倒数第二个元素开始遍历数组,直到第二个元素
        for (int i = n - 2; i > 0; i--) {
            // 如果该元素被标记为可能有美丽值 2,并且小于右侧最小值
            if (state[i] == 1 && nums[i] < suf_min) {
                // 该元素的美丽值为 2,累加到结果中
                res += 2;
            } 
            // 如果不满足美丽值为 2 的条件,判断是否满足美丽值为 1 的条件
            else if (nums[i - 1] < nums[i] && nums[i] < nums[i + 1]) {
                // 该元素的美丽值为 1,累加到结果中
                res += 1;
            }
            // 更新右侧最小值为当前元素和之前右侧最小值中的较小值
            suf_min = Math.min(suf_min, nums[i]);
        }
        // 返回所有元素的美丽值总和
        return res;
    }
}


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

相关文章:

  • LM Studio 替换源的方式解决huggingface.co无法访问的问题
  • Java 无 GUI 浏览器:HtmlUnit 入门及实战 [特殊字符]
  • 地理信息系统(ArcGIS)在水文水资源、水环境中的应用
  • ClickHouse 通过 ​*ARRAY JOIN* 结合 ​Map 类型的内置函数取数值
  • ollama docker离线安装本地大模型
  • 如何解决Redis的缓存雪崩、缓存击穿、缓存穿透?
  • Flink状态管理深度探索:从Keyed State到分布式快照
  • 在 Windows 系统下使用 VMware 安装 Ubuntu 24.04 LTS 系统
  • unittest vs pytest区别
  • 分布式存储学习——HBase表结构设计
  • ESP32芯片模组方案,设备物联网无线通信,WiFi蓝牙交互控制应用
  • 25年3月重磅--聊聊OpenManus
  • Go语言 vs Java语言:核心差异与适用场景解析
  • 文档在线协同工具ONLYOFFICE教程:如何使用宏对 PDF 表单中的特定字段执行计算
  • Haskell爬虫:为电商运营抓取京东优惠券的实战经验
  • LLM论文笔记 23: Meta Reasoning for Large Language Models
  • 【算法】数组、链表、栈、队列、树
  • 饮食调治痉挛性斜颈,开启健康生活
  • 《C#上位机开发从门外到门内》2-4:Modbus协议
  • WEB-CTFyj解题视频笔记(持续更新)