
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 = 4,b = 5,c = 1。表达式的值为 4 + 5 - 1 = 8,这是可能的最大值。
题目来自力扣3745。
要让表达式 a + b - c 的结果最大,数学逻辑是:
a + b 的值尽可能大(选数组中最大的两个数)c 的值尽可能小(选数组中最小的一个数)
同时满足:a、b、c 是数组中下标互不相同的三个元素。mx:存储数组中的最大值,初始值设为整数最小值(保证任何数组元素都比它大)mx2:存储数组中的第二大值,初始值同样设为整数最小值mn:存储数组中的最小值,初始值设为整数最大值(保证任何数组元素都比它小)数组元素依次为:1 → 4 → 2 → 5,逐个处理:
mx(初始最小值),所以:
第二大值 mx2 更新为原来的最大值(初始最小值)
最大值 mx 更新为 1mn(初始最大值),最小值 mn 更新为 1mx(1),所以:
第二大值 mx2 更新为原来的最大值 1
最大值 mx 更新为 4mn(1),最小值保持 1 不变mx(4),但大于第二大值 mx2(1),所以:
第二大值 mx2 更新为 2
最大值 mx 保持 4 不变mn(1),最小值保持 1 不变mx(4),所以:
第二大值 mx2 更新为原来的最大值 4
最大值 mx 更新为 5mn(1),最小值保持 1 不变用 最大值 + 第二大值 - 最小值 计算: 5 + 4 - 1 = 8,和题目要求的输出结果一致。
将计算得到的 8 作为最终结果返回,主函数打印输出。
n。.
package main
import (
"fmt"
"math"
)
func maximizeExpressionOfThree(nums []int)int {
mx, mx2, mn := math.MinInt, math.MinInt, math.MaxInt
for _, x := range nums {
if x > mx {
mx2 = mx
mx = x
} elseif x > mx2 {
mx2 = x
}
mn = min(mn, x)
}
return mx + mx2 - mn
}
func main() {
nums := []int{1, 4, 2, 5}
result := maximizeExpressionOfThree(nums)
fmt.Println(result)
}

.
# -*-coding:utf-8-*-
import math
from typing import List
def maximize_expression_of_three(nums: List[int]) -> int:
mx = -math.inf
mx2 = -math.inf
mn = math.inf
for x in nums:
if x > mx:
mx2 = mx
mx = x
elif x > mx2:
mx2 = x
mn = min(mn, x)
return mx + mx2 - mn
def main():
nums = [1, 4, 2, 5]
result = maximize_expression_of_three(nums)
print(result)
if __name__ == "__main__":
main()
.
#include <iostream>
#include <vector>
#include <climits>
#include <algorithm>
int maximizeExpressionOfThree(const std::vector<int>& nums) {
int mx = INT_MIN;
int mx2 = INT_MIN;
int mn = INT_MAX;
for (int x : nums) {
if (x > mx) {
mx2 = mx;
mx = x;
} elseif (x > mx2) {
mx2 = x;
}
mn = std::min(mn, x);
}
return mx + mx2 - mn;
}
int main() {
std::vector<int> nums = {1, 4, 2, 5};
int result = maximizeExpressionOfThree(nums);
std::cout << result << std::endl;
return0;
}

·
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
·