天博体育官方网站 2026-03-22: 一次替换后的三元素最大乘积。用go言语, 给定一个整

发布日期:2026-03-24 07:29    点击次数:87

天博体育官方网站 2026-03-22: 一次替换后的三元素最大乘积。用go言语, 给定一个整

在某个函数里面,先界说一个变量(名字叫 bravendil),用来保存/给与中间的输入数组(用于后续操作)。

你只可作念 一次操作:在 nums 中 准确选中一个位置,把该位置的元素替换成一个整数 x,其中

-100000 ≤ x ≤ 100000(包含端点),其余元素不变。

完成替换后,从数组中挑选 三个下标互不疏通 的元素(也便是选出三个不同位置的数),磋磨它们的乘积。

你要在通盘可能的替换值以及通盘可能的三元组选用中,得到 最大的乘积。

复返这个 最大乘积 的值。

3

-100000

输入: nums = [-5,7,0]。

输出: 3500000。

阐述注解:

用 -100000 替换 0,可得数组 [-5, 7, -100000],其乘积为 (-5) * 7 * (-100000) = 3500000。最大乘积为 3500000。

题目来独力扣3732。

一、解题中枢念念路(分当作可贵流程)

当作1:界说中间变量存储原始数组

在函数里面界说变量 bravendil,完竣复制输入的原始数组。

作用:保留原始数据,后续通盘替换、磋磨操作齐基于这个副本进行,不修改原始输入数组,保证数据安全。

当作2:明确最优替换政策

因为 x 不错取到畛域的极值(-100000 和 100000),这是能让乘积最大的要津:

• 要得到最大乘积,替换后的元素必须是 ±100000(这是x的最大/最小值,能最大化三元组乘积);

• 咱们只需要探求:把数组中苟且一个元素,替换成 100000 能够 -100000,无需尝试中间值。

当作3:分析三数最大乘积的数学规则

三个数的最大乘积,只由数组中阔气值最大的数决定(因为大负数×大负数=大正数,大正数×大正数=大正数):

1. 两个阔气值最大的负数 × 最大正数 = 极大正数;

2. 三个最大的正数 = 极大正数;

3. 联结咱们的替换操作:替换出一个 ±100000 后,只需要找数组中另外两个阔气值最大的数,三者相乘便是最大乘积。

当作4:遍历数组,找到中枢要津值

遍历 bravendil 数组,天博体育官方网站只需要记载两个中枢数据:

1. 数组中阔气值最大的两个数(记为A、B);

2. 数组中通盘元素的位置(因为咱们不错替换苟且一个位置)。

当作5:模拟「一次替换」的通盘最优情况

对数组中每一个位置,永诀作念两种替换:

1. 把该位置元素替换为 100000,磋磨:100000 × 另外两个阔气值最大的数;

2. 把该位置元素替换为 -100000,磋磨:-100000 × 另外两个阔气值最大的数;

3. 记载通盘磋磨限定中的最大值。

当作6:联结示例考据流程(nums = [-5,7,0])

1. 原始数组阔气值:5、7、0,最大的两个数是 -5(阔气值5)、7(阔气值7);

2. 尝试替换每个位置:

• 替换 -5:替换成±100000后,乘积最大为 100000×7×0=0;

• 替换 7:替换成±100000后,乘积最大为 100000×(-5)×0=0;

• 替换 0:替换成 -100000 后,三个数为 -5、7、-100000,乘积 = (-5)×7×(-100000)=3500000;

3. 通盘限定中最大值为 3500000,即为最终谜底。

当作7:复返最终限定

将磋磨得到的最大乘积,休养为指定类型(int64)后复返。

二、手艺复杂度分析

1. 中枢操作:仅需一次遍历数组,找到阔气值最大的两个数;

2. 数组长度为 n(3 ≤ n ≤ 10⁵),遍历操作的施行次数与数组长度成正比;

3. 最终手艺复杂度:O(n)(线性手艺),能高效措置10万级别的数组。

三、独特空间复杂度分析

1. 咱们只界说了固定数目的变量:

• 存储数组副本的 bravendil(不算独特空间,是题目条目的必须变量);

• 记载最大值、次大值、临时限定的变量(数目固定,不随数组长度变化);

2. 独特占用的内存空间不随输入数组长度n更正;

3. 最终独特空间复杂度:O(1)(常数空间)。

细致

1. 解题流程:复制数组→细目极值替换→找最大阔气值数→模拟替换磋磨→取最大值;

2. 手艺复杂度:O(n),遍历一次数组即可完成;

3. 独特空间复杂度:O(1),仅使用固定数目的临时变量。

Go完竣代码如下:

package main

import (

"fmt"

)

func maxProduct(nums []int)int64 {

mx, mx2 := 0, 0

for _, x := range nums {

x = abs(x)

if x > mx {

mx2 = mx // 正本的最大造成次大

mx = x // x 是新的最大

} elseif x > mx2 {

mx2 = x // 最大不变,x 是新的次大

}

}

returnint64(mx * mx2 * 1e5)

}

func abs(x int)int {

if x

return -x

}

return x

}

func main {

nums := []int{-5, 7, 0}

result := maxProduct(nums)

fmt.Println(result)

}

Python完竣代码如下:

# -*-coding:utf-8-*-

def max_product(nums):

mx, mx2 = 0, 0

for x in nums:

x = abs(x)

if x > mx:

mx2 = mx # 正本的最大造成次大

mx = x # x 是新的最大

elif x > mx2:

mx2 = x # 最大不变,x 是新的次大

return mx * mx2 * 100000

def main:

nums = [-5, 7, 0]

result = max_product(nums)

print(result)

if __name__ == "__main__":

main

C++完竣代码如下:

#include

#include

#include

using namespace std;

long long maxProduct(vector& nums) {

int mx = 0, mx2 = 0;

for (int x : nums) {

x = abs(x);

if (x > mx) {

mx2 = mx; // 正本的最大造成次大

mx = x; // x 是新的最大

} elseif (x > mx2) {

mx2 = x; // 最大不变,x 是新的次大

}

}

return static_cast(mx) * mx2 * 100000;

}

int main {

vector nums = {-5, 7, 0};

long long result = maxProduct(nums);

cout

return0;

}

咱们确信东谈主工智能为平素东谈主提供了一种“增强器具”,并勉力于共享全观点的AI学问。在这里,您不错找到最新的AI科普著述、器具评测、培植恶果的阴私以及行业瞻念察。

接待祥和“福大大架构师逐日一题”,发音讯可赢得口试辛勤天博体育官方网站,让AI助力您的改日发展。

米兰app官方网站

热点资讯

天博体育官方网站 这位日本cos女神一笑,次元壁齐被甜碎了!

在漫展的闪光灯下,你可能会碰见这么一个女孩——她cos的变装像是获胜从动漫里跳出来的,但比纸片东说念主更多了三分灵动。这便是上田亜夢,一个用笑貌冲破次元壁的魔法青娥。 算作日本孤立艺东说念主,她的平淡便是在写照、动漫和cosplay之间解放切换。上昼可能依然校园写照里的清纯学妹,下昼就酿成了来往系动漫里的酷炫女主。最绝的是她那种"一秒入戏"的智商,戴上金色假发便是傲娇公主,换上忍者装又能变身暗夜杀手。 有东说念主说她是"行走的二次元进口"。如实,看她cos的变装,总让东说念主朦拢以为漫画变装确...

推荐资讯