小美有一个长度为 n 的数组,她想将这个数组进行求和,即 sum = a_1+a_2+...+a_n 。 小美可以使用一次魔法(也可以不使用),将其中一个加号变成乘号,使得 sum 最大。 求出最大的 sum 。
第一行输入一个整数 n 。 第二行输入 n 个整数表示数组 a 。 1 ≤ n ≤ 10^5 1 ≤ a_i ≤ 10^9
输出一个整数表示答案。
6 1 1 4 5 1 4
27
考点:贪心
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:贪心
本题切入点
把一个加号换成乘号相当于把相邻两项合并,最优一定发生在最大的两个数之间(或用 1 兼顾别的情况),枚举 n−1 个位置取最大。
每一步都取当前最优,靠问题性质保证局部最优能拼成全局最优。
思路框架(贪心 通法 · 非本题专属)
实现要点:贪心题关键在于排序规则:按什么关键字排序决定了策略是否正确。
复杂度:时间 O(n log n)(含排序) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1:输入 6 / 1 1 4 5 1 4 → 输出 27
小美可以将 4 和 5 之间的加号改成乘号。
1 + 1 + 4 * 5 + 1 + 4 = 27
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第二批笔试。