LeetCode.2908. 元素和最小的山形三元组 I

题目

2908. 元素和最小的山形三元组 I

分析

首先,看到这道题,第一反应就是暴力方法,三层for循环,枚举每一种情况,代码如下

class Solution {public int minimumSum(int[] nums) {int min = Integer.MAX_VALUE;for(int i = 0;i < nums.length - 2;i ++) {for(int j = i+1;j < nums.length - 1;j ++) {for(int k = j+1;k < nums.length;k ++) {if(nums[i] < nums[j] && nums[k] < nums[j])min = Math.min(min,nums[i]+nums[j]+nums[k]);}}}return min ==  Integer.MAX_VALUE?-1:min;}
}

这虽然能通过LeetCode,但是太暴力了。我们还是要想一些其他方法来解决。我们可以利用前后缀的思想来解决,具体思路如下:

枚举nums[i],我们需要知道i左边的最小元素和i右边的最小元素,得到每一个nums[i]的左右两个元素和当前nums[i]相加,最小的值就是我们要求的值。

我们定义 suf[i] 表示 i 右边最小的值(包含i位置)。我们怎么求的这个值呢????我们从后向前遍历,suf[i] = Math.min(suf[i+1] , nums[i])

前缀最小值pre采取同样的方法,可以和答案一起计算,所以,只需要定义成一个变量即可。

三个数之和就是:pre + nums[i] + suf[i+1]。题目也就是让我们求这个的最小值。

代码

class Solution {public int minimumSum(int[] nums) {int n = nums.length;int[] suf = new int[n]; // 后缀最小值suf[n - 1] = nums[n-1];for(int i = n - 2;i > 1;i --) {suf[i] = Math.min(suf[i+1],nums[i]);}int ans = Integer.MAX_VALUE;int pre = nums[0]; // 前缀最小值for(int i = 1;i < n - 1;i ++) {if(pre < nums[i] && nums[i] > suf[i+1]) {ans = Math.min(ans,pre+nums[i]+suf[i+1]);}pre = Math.min(pre,nums[i]);}return ans == Integer.MAX_VALUE ? -1 : ans;}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的学生选课系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

线程池详解、核心参数、拒绝策略

什么是线程池 线程池是一种池化技术&#xff0c;它预先创建一组线程&#xff0c;用于执行异步任务。当有新任务到来时&#xff0c;线程池可以立即分配一个线程来处理&#xff0c;而不需要临时创建。这样可以减少因为频繁创建和销毁线程而导致的开销。 线程池的应用场景 高并…

2024年腾讯云4核8G12M轻量应用服务器测评_CPU内存带宽系统盘

腾讯云4核8G服务器价格&#xff1a;轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线&#xff1f;支持30个并发数&#xff0c;可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

什么是技术分析和EA技术?澳福一个提醒丰厚收益

技术分析是指根据炒外汇市场汇率走势的过去表现&#xff0c;借助技术分析工具预测汇率的未来趋势并确定入市、出市策略的预测分析方法。 它是以预测市场价格变化的未来趋势为目的&#xff0c;以市场行为(外汇市场的价格和交易量)的图形、图表、形态、指标为手段&#xff0c;使用…

docker通过已有镜像打包执行

1、查看已有镜像 docker images 2、制作dockerfile FROM python LABEL maintainer"JETZ" add . / WORKDIR /3、新建镜像 docker build -t python3.7.13 .4、打包导出镜像 docker save python3.7.13 -o /opt/python3.7.13.tar5、重新加载镜像 cd /opt docker l…

电商系列之取消订单

> 插&#xff1a;AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

SOA-面向服务架构

SOA-面向服务架构 1.概述2.SOA的设计原则包括&#xff1a;3. SOA实现方法1.Web Service2. 服务注册表3. 企业服务总线 细讲 超赞笔记 1.概述 SOA &#xff08;Service-Oriented Architecture&#xff0c;SOA&#xff09;&#xff0c;从应用和原理的角度&#xff0c;目前有2种…

Matlab之提高交叉定位点的定位精度

通过测向交叉定位的方法&#xff0c;按理只需2根测向线即可得出定位点的位置。但由于误差的存在&#xff0c;求出的定位点位置存在一定的偏差。为了得到更加精确的定位点位置&#xff0c;需要对定位点进行冗余测量&#xff0c;从而得到多个定位点&#xff0c;然后通过定位点估计…

GRE和MGRE综合实验

实验拓扑图 实验思路 根据图中所属网段&#xff0c;配置ip地址和网关R1,R2,R3,R4配置缺省路由&#xff0c;可以是公网互通使用ppp验证&#xff0c;R1与R5为PAP验证&#xff0c;R5:aaa地址池&#xff0c;创建用户名以及密码&#xff0c;同时进行pap服务认证&#xff0c;同时在…

使用nvm管理nodejs版本

文章目录 1、下载NVM2、选择NVM安装3 、查询版本号&常用命令4、nvm命令安装指定版本node4.1 安装指定node4.2 查看是否安装成功4.3 切换node版本到你想要的版本4.4 再次查看nvm版本列表4.5 nvm其他常用命令 这个是每个全能前端经常会用到的&#xff0c;之前用过现在重装了&…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText&#xff0c;支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

WebViz可视化

WebViz可视化 Webviz是一个基于Web的可视化工具&#xff0c;意味着您可以通过浏览器/APP访问它&#xff0c;而不需要安装额外的软件。这对于远程访问和团队协作非常方便。 Foxglove是一个开源的工具包&#xff0c;包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了…

Gitea 的详细介绍

什么是 Gitea&#xff1f; Gitea 是一个开源、轻量级的自托管 Git 服务&#xff0c;它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发&#xff0c;Gitea 具有高效的性能和跨平台特性&#xff0c;适合个人开发者或小团队使用。 Gitea 的特点 轻量…

蓝桥杯第十三届电子类单片机组程序设计

目录 前言 单片机资源数据包_2023 一、第十三届比赛省赛 1.比赛题目 2.赛题解读 二、部分功能实现 1.继电器的开启与关闭 2.长按切换显示状态功能的实现 3.对于温度传感器小数部分的处理 4.其他处理 1&#xff09;关于数码管显示小数的处理 2&#xff09;关于5s后继…

结构体类型,结构体变量的创建和初始化 以及结构中存在的内存对齐

一般结构体类型的声明 struct 结构体类型名 { member-list; //成员表列 }variable-list; //变量表列 例如描述⼀个学⽣&#xff1a; struct Stu { char name[20]; //名字 int age; //年龄 char sex[5]; //性别 }&#xff1b; //结构体变量的初始化 int main() { S…

牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…

Modelsim手动仿真实例

目录 1. 软件链接 2. 为什么要使用Modelsim 3. Modelsim仿真工程由几部分组成&#xff1f; 4. 上手实例 4.1. 新建文件夹 4.2. 指定目录 4.3. 新建工程 4.4. 新建设计文件&#xff08;Design Files&#xff09; 4.5. 新建测试平台文件&#xff08;Testbench Files&…

企业数据被新型.rmallox勒索病毒加密,应该如何还原?

.rmallox勒索病毒为什么难以解密&#xff1f; .rmallox勒索病毒难以解密的主要原因在于其采用了高强度的加密算法&#xff0c;并且这些算法被有效地实施在了病毒程序中。具体来说&#xff0c;.rmallox勒索病毒使用了RSA和AES这两种非常成熟的加密算法。RSA是一种非对称加密算法…

3D汽车模型线上三维互动展示提供视觉盛宴

VR全景虚拟看车软件正在引领汽车展览行业迈向一个全新的时代&#xff0c;它不仅颠覆了传统展览的局限&#xff0c;还为参展者提供了前所未有的高效、便捷和互动体验。借助于尖端的vr虚拟现实技术、逼真的web3d开发、先进的云计算能力以及强大的大数据处理&#xff0c;这一在线展…