wy的leetcode刷题记录_Day76

wy的leetcode刷题记录_Day76

声明

本文章的所有题目信息都来源于leetcode
如有侵权请联系我删掉!
时间:2024-1-24

前言

2865. 美丽塔 I

今天的每日一题是:2865. 美丽塔 I

题目介绍

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。

你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。

如果以下条件满足,我们称这些塔是 美丽 的:

  • 1 <= heights[i] <= maxHeights[i]
  • heights 是一个 山脉 数组。

如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山脉 数组:

  • 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]
  • 对于所有 i <= k < n - 1,都有 heights[k + 1] <= heights[k]

请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

示例 1:

输入:maxHeights = [5,3,4,1,1]
输出:13
解释:和最大的美丽塔方案为 heights = [5,3,3,1,1],这是一个美丽塔方案,因为:

  • 1 <= heights[i] <= maxHeights[i]
  • heights 是个山脉数组,峰值在 i = 0 处。
    13 是所有美丽塔方案中的最大高度和。

示例 2:
输入:maxHeights = [6,5,3,9,2,7]
输出:22
解释: 和最大的美丽塔方案为 heights =
[3,3,3,9,2,2] ,这是一个美丽塔方案,因为:

  • 1 <= heights[i] <= maxHeights[i]
  • heights 是个山脉数组,峰值在 i = 3 处。 22 是所有美丽塔方案中的最大高度和。

示例 3:
输入:maxHeights = [3,2,5,5,2,3]
输出:18
解释:和最大的美丽塔方案为 heights = [2,2,5,5,2,2] ,这是一个美丽塔方案,因为:

  • 1 <= heights[i] <= maxHeights[i]
  • heights 是个山脉数组,最大值在 i = 2 处。 注意,在这个方案中,i = 3 也是一个峰值。 18 是所有美丽塔方案中的最大高度和。

思路

模拟法:乍一看这道题蛮复杂的,其实仔细思考过后这道题就是三个条件,所有的高度要在maxheight之下且height满足山脉数组,即一个凸型。我们根据已知的maxheight遍历每一个位置,每次遍历选取一个山头(即凸点),俩边若maxheight[i]大于凸点那么height只能取凸点的值;否则取maxheight的值,并且维护一个临界值将其置为maxheight[i],用来确保height是为山脉数组。

代码

class Solution {
   
public:
    long long maximumSumOfHeights(vector<int>& maxHeights) {
   
        int n=maxHeights.size();
        long long ans=0;
        for(int i=0;i<n;i++)
        {
      
            long long temp=maxHeights[i];
            long long height=-1*temp;
            for(int j=i;j>=0;j--)
            {
   
                if(temp>=maxHeights[j])
                {
   
                    height+=maxHeights[j];
                    temp=maxHeights[j];
                }
                else
                {
   
                    height+=temp;
                }
            }
            temp=maxHeights[i];
            for(int j=i;j<n;j++)
            {
   
                if(temp>=maxHeights[j])
                {
   
                    height+=maxHeights[j];
                    temp=maxHeights[j];
                }
                else
                {
   
                    height+=temp;
                }
            }
            ans=max(ans,height);
        }
        return ans;
    }
};

收获

简单的模拟题,重要的是寻找题目中巧妙的解法。

相关推荐

  1. wyleetcode记录_Day76

    2024-01-25 07:40:06       58 阅读
  2. LeetCode记录76. 最小覆盖子串

    2024-01-25 07:40:06       35 阅读
  3. LeetCode记录——day7

    2024-01-25 07:40:06       38 阅读
  4. LeetCode记录——day8

    2024-01-25 07:40:06       42 阅读
  5. LeetCode记录——day9

    2024-01-25 07:40:06       37 阅读
  6. leetcode记录 day21

    2024-01-25 07:40:06       145 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 07:40:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 07:40:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 07:40:06       82 阅读
  4. Python语言-面向对象

    2024-01-25 07:40:06       91 阅读

热门阅读

  1. Leetcode刷题(二十九)

    2024-01-25 07:40:06       59 阅读
  2. toggle封装

    2024-01-25 07:40:06       62 阅读
  3. SpringBoot-SpringBoot自动配置底层源码解析

    2024-01-25 07:40:06       44 阅读
  4. 使用django-admin来做erp,是否需要使用缓存数据库

    2024-01-25 07:40:06       57 阅读
  5. 数据结构练习3

    2024-01-25 07:40:06       47 阅读
  6. 江苏服务器租用要注意哪些方面?

    2024-01-25 07:40:06       55 阅读
  7. html 粒子效果文字特效

    2024-01-25 07:40:06       60 阅读
  8. Hadoop-MapReduce-源码跟读-客户端篇

    2024-01-25 07:40:06       43 阅读
  9. CentOS 安装 Ruby

    2024-01-25 07:40:06       61 阅读
  10. VSCode Python调试运行:json编写

    2024-01-25 07:40:06       47 阅读