2026-03-31:三元素表达式的最大值。用go语言,从数组 nums 中任选三个下标互不相同的元素,设这三个元素分别为 a、b、c(对应的下标不能重复)。 计算表达式 a + b - c,希望让它

发布时间:2026/7/24 22:00:46

2026-03-31:三元素表达式的最大值。用go语言,从数组 nums 中任选三个下标互不相同的元素,设这三个元素分别为 a、b、c(对应的下标不能重复)。 计算表达式 a + b - c,希望让它 2026-03-31三元素表达式的最大值。用go语言从数组 nums 中任选三个下标互不相同的元素设这三个元素分别为 a、b、c对应的下标不能重复。计算表达式 a b - c希望让它的结果尽可能大。最终返回所有可能选择中该表达式取得的最大值。3 nums.length 100。-100 nums[i] 100。输入 nums [1,4,2,5]。输出 8。解释可以选择 a 4b 5c 1。表达式的值为 4 5 - 1 8这是可能的最大值。题目来自力扣3745。一、核心解题思路要让表达式a b - c的结果最大数学逻辑是让a b的值尽可能大选数组中最大的两个数让c的值尽可能小选数组中最小的一个数同时满足a、b、c 是数组中下标互不相同的三个元素。二、代码执行详细步骤以输入 nums [1,4,2,5] 为例步骤1初始化三个关键变量mx存储数组中的最大值初始值设为整数最小值保证任何数组元素都比它大mx2存储数组中的第二大值初始值同样设为整数最小值mn存储数组中的最小值初始值设为整数最大值保证任何数组元素都比它小步骤2遍历数组中的每一个元素逐个更新变量数组元素依次为1 → 4 → 2 → 5逐个处理处理第一个元素 11 大于当前最大值mx初始最小值所以第二大值mx2更新为原来的最大值初始最小值最大值mx更新为 11 小于当前最小值mn初始最大值最小值mn更新为 1此时变量mx1mx2最小数mn1处理第二个元素 44 大于当前最大值mx1所以第二大值mx2更新为原来的最大值 1最大值mx更新为 44 大于当前最小值mn1最小值保持 1 不变此时变量mx4mx21mn1处理第三个元素 22 不大于当前最大值mx4但大于第二大值mx21所以第二大值mx2更新为 2最大值mx保持 4 不变2 大于当前最小值mn1最小值保持 1 不变此时变量mx4mx22mn1处理第四个元素 55 大于当前最大值mx4所以第二大值mx2更新为原来的最大值 4最大值mx更新为 55 大于当前最小值mn1最小值保持 1 不变此时变量mx5mx24mn1步骤3计算最终结果用最大值 第二大值 - 最小值计算5 4 - 1 8和题目要求的输出结果一致。步骤4返回结果并输出将计算得到的 8 作为最终结果返回主函数打印输出。三、时间复杂度分析代码中只执行了一次数组遍历遍历的次数等于数组的长度n。遍历过程中的每一步操作比较、赋值、计算都是常数时间 O(1)。总时间复杂度O(n)n 为数组长度。四、额外空间复杂度分析代码中没有创建与数组长度相关的新数据结构如新数组、切片等。只使用了 3 个固定的变量mx、mx2、mn占用的空间是常数不随数组长度变化。总额外空间复杂度O(1)。总结求解核心选最大两数相加减去最小数保证三个数下标不同执行过程初始化变量→遍历数组更新最大、第二大、最小值→计算表达式→输出结果时间复杂度 O(n)仅需一次遍历额外空间复杂度 O(1)仅使用固定数量的变量。Go完整代码如下packagemainimport(fmtmath)funcmaximizeExpressionOfThree(nums[]int)int{mx,mx2,mn:math.MinInt,math.MinInt,math.MaxIntfor_,x:rangenums{ifxmx{mx2mx mxx}elseifxmx2{mx2x}mnmin(mn,x)}returnmxmx2-mn}funcmain(){nums:[]int{1,4,2,5}result:maximizeExpressionOfThree(nums)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-importmathfromtypingimportListdefmaximize_expression_of_three(nums:List[int])-int:mx-math.inf mx2-math.inf mnmath.infforxinnums:ifxmx:mx2mx mxxelifxmx2:mx2x mnmin(mn,x)returnmxmx2-mndefmain():nums[1,4,2,5]resultmaximize_expression_of_three(nums)print(result)if__name____main__:main()C完整代码如下#includeiostream#includevector#includeclimits#includealgorithmintmaximizeExpressionOfThree(conststd::vectorintnums){intmxINT_MIN;intmx2INT_MIN;intmnINT_MAX;for(intx:nums){if(xmx){mx2mx;mxx;}elseif(xmx2){mx2x;}mnstd::min(mn,x);}returnmxmx2-mn;}intmain(){std::vectorintnums{1,4,2,5};intresultmaximizeExpressionOfThree(nums);std::coutresultstd::endl;return0;}

相关新闻