山形三元组

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

代码如下:

复制代码
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),可以通过本题,但不是最优解。

相关推荐
0x7CF40 分钟前
SetThrowSegvLongjmpSEHFilter错误和myFuncInitialize 崩溃
java·linux·算法
Felven2 小时前
E. Scuza
数据结构·c++·算法
PixelMind3 小时前
【LUT技术专题】极小尺寸LUT算法:TinyLUT
人工智能·深度学习·算法·lut·图像超分辨率
asom224 小时前
LeetCode Hot100(字串)
算法·leetcode
学习使我变快乐5 小时前
C++:无序容器
数据结构·c++·算法
朱剑君5 小时前
贪心算法——分数背包问题
算法·贪心算法
小O的算法实验室6 小时前
2008年EJOR SCI2区,连续蚁群优化算法ACOR,深度解析+性能实测
算法·智能算法
2301_794461576 小时前
力扣-将x减到0的最小操作数
数据结构·算法·leetcode
bing_feilong6 小时前
树莓派4B搭建Hector SLAM算法, ROS1 & ROS2?
算法·机器人
晨曦夜月6 小时前
《牛客》数组中出现次数超过一半的数字
算法