山形三元组

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

代码如下:

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

相关推荐
丁浩6661 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
伏小白白白1 小时前
【论文精度-2】求解车辆路径问题的神经组合优化算法:综合展望(Yubin Xiao,2025)
人工智能·算法·机器学习
无敌最俊朗@2 小时前
数组-力扣hot56-合并区间
数据结构·算法·leetcode
囚生CY2 小时前
【速写】优化的深度与广度(Adam & Moun)
人工智能·python·算法
码农多耕地呗3 小时前
力扣94.二叉树的中序遍历(递归and迭代法)(java)
数据结构·算法·leetcode
微笑尅乐3 小时前
BFS 与 DFS——力扣102.二叉树的层序遍历
leetcode·深度优先·宽度优先
懒羊羊不懒@3 小时前
Java基础语法—最小单位、及注释
java·c语言·开发语言·数据结构·学习·算法
白云千载尽4 小时前
leetcode 912.排序数组
算法·leetcode·职场和发展
哆啦刘小洋4 小时前
Tips:预封装约束的状态定义
算法
代码充电宝4 小时前
LeetCode 算法题【简单】290. 单词规律
java·算法·leetcode·职场和发展·哈希表