LeetCode-2908. 元素和最小的山形三元组 I【数组,前后缀分解】

LeetCode-2908. 元素和最小的山形三元组 I【数组】

  • 题目描述:
  • 解题思路一:暴力解法,三个for循环
  • 解题思路二:优化,这里注意到1 <= nums[i] <= 50,其实如果有山形三元组,那么result是一定小于等于150的。
  • 解题思路三:O(n) 前后缀分解,从左到右遍历和从右到左遍历,分别记录遍历到当前位子的最小值。最后遍历一次更新答案。【这里尤其要注意left [i]的定义是:nums[i]以及之前数的最小值】

预计接下来一段时间会持续更新LeetCode的每日一题,以及其他题型。用的语言目前主要是Python。

题目描述:

给你一个下标从 0 开始的整数数组 nums 。

如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :

i < j < k
nums[i] < nums[j] 且 nums[k] < nums[j]
请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。

示例 1:

输入:nums = [8,6,1,5,3]
输出:9
解释:三元组 (2, 3, 4) 是一个元素和等于 9 的山形三元组,因为:

  • 2 < 3 < 4
  • nums[2] < nums[3] 且 nums[4] < nums[3]
    这个三元组的元素和等于 nums[2] + nums[3] + nums[4] = 9 。可以证明不存在元素和小于 9 的山形三元组。
    示例 2:

输入:nums = [5,4,8,7,10,2]
输出:13
解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:

  • 1 < 3 < 5
  • nums[1] < nums[3] 且 nums[5] < nums[3]
    这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。
    示例 3:

输入:nums = [6,5,4,3,4,5]
输出:-1
解释:可以证明 nums 中不存在山形三元组。

提示:

3 <= nums.length <= 50
1 <= nums[i] <= 50

解题思路一:暴力解法,三个for循环

class Solution:def minimumSum(self, nums: List[int]) -> int:result = float('inf')flag = Falsefor i in range(len(nums)-2):for j in range(i + 1, len(nums) - 1):for k in range(j + 1, len(nums)):if nums[i] < nums[j] and nums[j] > nums[k]:flag = Trueresult = min(result, nums[i] + nums[j] + nums[k])return result if flag else -1

时间复杂度:O(n3)
空间复杂度:O(1)

解题思路二:优化,这里注意到1 <= nums[i] <= 50,其实如果有山形三元组,那么result是一定小于等于150的。

class Solution:def minimumSum(self, nums: List[int]) -> int:result = float('inf')for i in range(len(nums)-2):for j in range(i + 1, len(nums) - 1):for k in range(j + 1, len(nums)):if nums[i] < nums[j] and nums[j] > nums[k]:result = min(result, nums[i] + nums[j] + nums[k])return result if result != float('inf') else -1

时间复杂度:O(n3)
空间复杂度:O(1)

解题思路三:O(n) 前后缀分解,从左到右遍历和从右到左遍历,分别记录遍历到当前位子的最小值。最后遍历一次更新答案。【这里尤其要注意left [i]的定义是:nums[i]以及之前数的最小值】

class Solution:def minimumSum(self, nums: List[int]) -> int:n = len(nums)result = float('inf')left = [0] * nleft[0] = nums[0]for i in range(1, n):left[i] = min(nums[i], left[i-1])right = nums[n-1]for i in range(n-2, 0, -1):if left[i-1] < nums[i] and nums[i] > right:result = min(result, left[i-1] + nums[i] + right)right = min(right, nums[i])return result if result != float('inf') else -1

时间复杂度:O(n)
空间复杂度:O(n) 其中 n 是数组的长度。

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

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

相关文章

汽车电子行业知识:汽车电子领域包含哪些技术

汽车电子行业涉及到许多方面的知识&#xff0c;包括但不限于&#xff1a; 汽车电子控制单元&#xff08;ECU&#xff09;&#xff1a;负责监控和控制车辆的各种系统&#xff0c;如发动机控制单元、制动系统控制单元、空调系统控制单元等。汽车传感器技术&#xff1a;包括温度传…

Luigi任务调度框架学习2:运行每一个Task,避免因判定完成导致跳过执行Task主程序

在上一篇Luigi的线性调度文章中&#xff08;Luigi任务调度框架学习1&#xff1a;线性调用流程&#xff09;&#xff0c;我们知道Task运行的时候&#xff1a; 每个任务是否完成有两次判定&#xff0c;即&#xff1a;进行判定(未完成) 》运行def run(self)函数 》进行判定(完成) …

国产暴雨AI服务器X3418开启多元自主可控新篇章

在当前数字化转型的大潮中&#xff0c;算力作为新质生产力的重要动力引擎&#xff0c;对推动经济社会发展起着关键作用。尤其在人工智能领域&#xff0c;随着高性能、安全可控的AI算力需求持续攀升&#xff0c;国产化服务器的研发与应用显得尤为迫切。 作为国内专业的算力基础…

mysql5.7 源码分析--初始化

集中在sql\mysqld.cc文件的mysqld_main函数中&#xff08;&#xff09;&#xff1a; 主程序入口 在sql\main.cc文件中&#xff1a; int main(int argc, char **argv) {return mysqld_main(arg, argv); } 一、mysql为了跨平台&#xff0c;对win32系统做了单独的初始化&#x…

【ENSP】交换机和路由器之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 路由器的每一个端口都是另外一个网段 2.实现方法 交换机允许对应vlan通行&#xff0c;配置vlanif的ip地址&#xff0c;做静态路由 路由器&#xff0c;进接口配置对应的ip&#xff0c;路由器和交换机相连的口&#xff0c;进入他的…

文心一言 VS 讯飞星火 VS chatgpt (225)-- 算法导论16.3 7题

七、推广赫夫曼算法&#xff0c;使之能生成三进制的码字(即码字由符号0、1、2组成)&#xff0c;并证明你的算法能生成最优三进制码。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 推广赫夫曼算法以生成三进制码字需要对算法进行一定的修改&#xff0c;确保在每…

JavaScript是如何实现页面渲染的

JavaScript实现页面渲染主要涉及到对DOM的操作、样式的修改以及与后端数据的交互。以下是JavaScript实现页面渲染的主要步骤和方式&#xff1a; 一、DOM操作 创建和修改元素&#xff1a;JavaScript可以使用document.createElement()来创建新的DOM元素&#xff0c;使用appendC…

力软框架打开新的对话框,点击对话框确认按钮的事件AcceptClick的方法

// 原来在力软框架下&#xff0c;点击哪个确认按钮的时候 top.frames[iframeId].AcceptClick直接用这个方法就可以了 &#xff0c;那个方法是直接返回方法的但是不知道是什么情况。如图二所示。死活就返回了ifram标签不知道是什么原因&#xff0c;就获取不到对话框里边自己定义…

求交错数列前n项和:输⼊⼀个正整数n,计算交错序列1-2/3+3/5-4/7+5/9-6/11+... 的前n项之和。试编写相应程序。

#include <stdio.h> #include <string.h> int main() { // 求交错数列前n项和&#xff1a;输个正整数n&#xff0c;计算交错序列1-2/33/5-4/75/9-6/11... 的前n // 项之和。试编写相应程序。 int sign 1; float sum 0; int n; scanf("…

nginx界面管理工具之nginxWebUI 搭建与使用

nginx界面管理工具之nginxWebUI 搭建与使用 一、nginxWebUI 1.nginx网页配置工具 官网地址: http://www.nginxwebui.cn 源码地址&#xff1a;https://git.chihiro.org.cn/chihiro/nginxWebUI 2.功能说明 本项目可以使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议…

springboot+vue+elementui保存时间类型数据报错JSON parse error

1.目前环境条件&#xff1a; ①mysql数据库中存储的时间字段类型为&#xff1a;datetime ②&#xff1a;springboot中存储的类型为&#xff1a;LocalDateTime ③前端代码&#xff1a; <el-col :span"24"><el-form-item><div slot"label"…

帆软报表踩坑日记

最近公司项目要是使用报表&#xff0c;公司使用的是帆软这个国产软件&#xff0c;自己也是学习使用&#xff0c;在使用的过程中记一下问题以及解决方式 公司使用的是帆软8这个版本&#xff0c;比较老了。 首先是表格中的扩展&#xff0c;就是当我们根据数据库查询数据然后放到表…

PageHelper分页错乱

PageHelper.startPage(qryOrderDetailParam.getPageNum(), qryOrderDetailParam.getPageSize()); 在使用分页插件时&#xff0c;如果sql的最后面跟着类似这个的sql OFFSET 0 ROWS FETCH NEXT #{taskNum} ROWS ONLY, 就是自己本身也有限制条数的逻辑&#xff1b; 双重限制逻辑…

【Vue3源码学习】— CH2.5 reactiveEffect.ts:Vue 3响应式系统的核心

reactiveEffect.ts&#xff1a;Vue 3响应式系统的核心 1. 什么是 reactiveEffect&#xff1f;2. 核心机制2.1 依赖收集&#xff08;Track&#xff09;2.2 触发更新&#xff08;Trigger&#xff09;2.3 效果范围&#xff08;effectScope&#xff09; 3. 源码解析 —— track3.1 …

云服务器16核64G租用优惠价格500元1个月、5168元一年,35M带宽

京东云16核64G服务器租用价格500元1个月、1500元3个月、2585元6个月、5168元一年&#xff0c;配置为16C64G-450G SSD系统盘-35M带宽-8000G月流量 华北-北京。京东云16核64G服务器优惠活动 atengyun.com/go/jd 链接打开如下图&#xff1a; 京东云16核64G服务器租用价格 京东云&a…

[超细] npm 版本号规范升级流程

版本号组成 node package版本号由四部分组成&#xff1a; major.minor.patch[-prerelease] 比如&#xff1a;1.0.2-beta.1&#xff0c;其中prerelease可选。 ● major&#xff1a;代表主版本号&#xff0c;通常在需要提交不能向下兼容的情况下对该版本号进行升级 ● minor&…

SD 修复 Midjourney 有瑕疵照片

Midjourney V6 生成的照片在质感上有了一个巨大的提升。下面4张图就是 Midjourney V6 生成的。 如果仔细观察人物和老虎的面部&#xff0c;细节真的很丰富。 但仔细观察上面四张图的手部细节&#xff0c;就会发现至少有两只手是有问题的。这也是目前所有 AI 绘图工具面临的问题…

【Roadmap to learn LLM】Large Language Models in Five Formulas

by Alexander Rush Our hope: reasoning about LLMs Our Issue 文章目录 Perpexity(Generation)Attention(Memory)GEMM(Efficiency)用矩阵乘法说明GPU的工作原理 Chinchilla(Scaling)RASP(Reasoning)结论参考资料 the five formulas perpexity —— generationattention —— m…

stm32定时器中断函数回调函数

方式一&#xff1a;stm32定时器中断可以直接在硬件中断函数TIM3_IRQHandler执行。 在HAL库中可以注册回调函数&#xff0c;在定时器中断发生时调用注册的函数&#xff0c;这样可以统一接口&#xff0c;大大提高函数可读性&#xff0c;和硬件解耦提高程序可移植性。 使用过程如…

Linux 开发环境以及编译链接

再谈编译链接 C函数重载与编译链接-CSDN博客 之前我已经写过文章简单介绍了编译链接要做的一些操作。现在为了能更好的理解我们平时的开发环境&#xff0c;我会在Linux系统上完整地走一遍流程。 环境描述 我们使用普通用户在Linux上进行操作&#xff0c;先写一段测试代码。 …