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

268.数组美丽值求和

2012. 数组美丽值求和 - 力扣(LeetCode)

class Solution {
    public int sumOfBeauties(int[] nums) {
        int res=0;
        int[] everyMax=new int[nums.length];//每个数组前面最大的数字
        int[] everyMin=new int[nums.length];//每个数组后面最小的数字
        everyMin[nums.length-1]=Integer.MAX_VALUE;
        for(int i=1;i<nums.length;i++){
            everyMax[i]=Math.max(nums[i-1],everyMax[i-1]);
        }
        for(int i=nums.length-2;i>=0;i--){
            everyMin[i]=Math.min(nums[i+1],everyMin[i+1]);
        }
        for(int i=1;i<nums.length-1;i++){
            if(nums[i]>everyMax[i]&&nums[i]<everyMin[i]){
                res+=2;
            }
            else if(i>0&&i<nums.length-1&&nums[i - 1]<nums[i]&&nums[i]<nums[i + 1]){
                res++;
            }
        }
        return res;
    }
}
class Solution(object):
    def sumOfBeauties(self, nums):
        res=0
        n=len(nums)
        everyMax=n*[0]#每个数组前面最大的数字
        everyMin=n*[0]#每个数组后面最小的数字
        everyMin[-1]=sys.maxint
        for i in range(1, n):
            everyMax[i] = max(nums[i - 1], everyMax[i - 1])
        for i in range(n - 2, -1, -1):
            everyMin[i] = min(nums[i + 1], everyMin[i + 1])
        for i in range(1, n - 1):
            if nums[i] > everyMax[i] and nums[i] < everyMin[i]:
                res += 2
            elif i > 0 and i < n - 1 and nums[i - 1] < nums[i] and nums[i] < nums[i + 1]:
                res += 1
        return res

为了高效地计算每个元素的美丽值,我们可以使用两个辅助数组:everyMax 和 everyMineveryMax[i] 表示数组 nums 中从第0个元素到第 i-1 个元素的最大值。everyMin[i] 表示数组 nums 中从第 i+1 个元素到最后一个元素的最小值。

初始化辅助数组:everyMax 数组用于存储每个位置前面的最大值。我们从左到右遍历数组,更新 everyMax 数组。everyMin 数组用于存储每个位置后面的最小值。我们从右到左遍历数组,更新 everyMin 数组。计算美丽值:对于数组中的每个元素 nums[i](不包括第一个和最后一个元素),我们检查它是否大于 everyMax[i] 并且小于 everyMin[i]。如果满足条件,美丽值为2。如果不满足上述条件,但 nums[i] 比它前面的元素大并且比它后面的元素小,美丽值为1。否则,美丽值为0。累加美丽值:我们将每个元素的美丽值累加到结果 res 中,最后返回 res。通过这种方法,我们可以在O(n)的时间复杂度内计算出数组中所有元素的美丽值之和。

相关文章:

  • 【C++】函数next_permutation
  • 生成式AI红队测试:如何有效评估大语言模型
  • 基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现
  • zabbix统计闲置资产
  • HTML课后实践
  • 代码随想录 Day 45 | 【第九章 动态规划part 08】121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
  • SPI驱动(九) -- SPI_Master驱动程序
  • Netty基础—8.Netty实现私有协议栈一
  • 蓝桥杯练习day1:自除数
  • Linux操作系统应用
  • 【JavaScript】三、数据类型
  • SpringBoot-已添加并下载的依赖,reload和mvn clean 后还是提示找不到jar包问题
  • svn常用命令
  • Spring Data JPA 参数陷阱:从 500 错误到完美解决的奇妙之旅 ✨
  • 【linux】服务器限制客户端ssh访问
  • debian12.9 kde切到x11安装搜狗输入法遇到的问题
  • JUC大揭秘:从ConcurrentHashMap到线程池,玩转Java并发编程!
  • 嵌入式编程优化技巧:do-while(0)、case范围扩展与内建函数
  • 图生视频技术的发展与展望:从技术突破到未来图景
  • Vue.js+Element UI 登录界面开发详解【附源码】
  • ps 制作网站/百度指数是免费的吗
  • 交友网站该如何做/今天的新闻 最新消息
  • 手机网站与pc网站同步/网络优化工程师前景如何
  • 答题卡在线制作网站/google商店
  • 光明网站建设/定制网站开发
  • jsp网站开发答辩/10000个免费货源网站