山形三元组

可以先考虑两个数的情况,即找到一个数作为中间点,左边找到最小值,右边找到最小值,计算三个数的和。然后枚举中间点,计算所有可能的和中的最小值即可。

代码如下:

复制代码
class Solution:
    def minTotal(self, nums: List[int]) -> int:
        n = len(nums)
        res = float('inf')
        for j in range(1, n - 1):
            left_min, right_min = float('inf'), float('inf')
            for i in range(j):
                if nums[i] < nums[j]:
                    left_min = min(left_min, nums[i])
            for k in range(j + 1, n):
                if nums[k] < nums[j]:
                    right_min = min(right_min, nums[k])
            if left_min != float('inf') and right_min != float('inf'):
                res = min(res, left_min + nums[j] + right_min)
        return res if res != float('inf') else -1

时间复杂度为O(n^3),可以通过本题,但不是最优解。

相关推荐
容器魔方1 分钟前
KubeEdge SIG AI: 基于KubeEdge-Ianvs的大模型联邦微调算法
大数据·人工智能·算法·云原生·容器·云计算
列星随旋10 分钟前
矩阵快速幂
java·算法·矩阵
z2005093012 分钟前
今日算法(回溯全排列)
c++·算法·leetcode
Boom_Shu13 分钟前
构造函数程序
数据结构·算法
MicroTech202520 分钟前
微算法科技(NASDAQ: MLGO)量子安全与区块链:量子神经网络QNN赋能动态共识与量子密钥分发
科技·算法·安全
sali-tec37 分钟前
C# 基于OpenCv的视觉工作流-章81-弯脚检测
图像处理·人工智能·opencv·算法·计算机视觉
kkeeper~38 分钟前
0基础C语言积跬步之自定义类型联合和枚举
c语言·开发语言·算法
昵称好难啊39 分钟前
4.OpenClaw源码解析_路由的概念
人工智能·算法
wanderist.40 分钟前
14决赛蓝桥杯
职场和发展·蓝桥杯
Bingorl44 分钟前
机器学习之KNN算法
人工智能·算法·机器学习