当前位置:网站首页>力扣152题乘数最大子数组
力扣152题乘数最大子数组
2022-07-06 09:22:00 【ai其实很简单】
152.乘数最大子数组
问题描述: 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
测试用例的答案是一个 32-位 整数。
子数组 是数组的连续子序列。
策略: 本题为动态规划的题,可以自底向上的求解答案,遍历整个数组计算当前的最大值用imax进行记录,不断更新最终求解出答案。由于数组中有负数,会将最大值变为最小值,最小值变成最大值,所以需要imin进行记录最小值。当求第i个数时:若该点的值为正数,则该点的最大值可能为前一个数的最大值乘该点的值,或者是该点的值(imax=fmax(imaxnums[i],nums[i]))最小值为(imin=fmin(iminnums[i],nums[i]););若该点的值为负数,将最大值与最小值进行交换,再进行求解。
代码:
int maxProduct(int* nums, int numsSize){
int imax=1,imin=1,max=INT_MIN;
for(int i=0;i<numsSize;i++){
if(nums[i]<0){
//当遇见负数的时候最大值会变成最小值,最小值变成最大值 此时交换位置
int temp=imin;
imin=imax;
imax=temp;
}
imax=fmax(imax*nums[i],nums[i]);
imin=fmin(imin*nums[i],nums[i]);
max=fmax(max,imax); //过去的最大值与该点的最大值进行比较
}
return max;
}
边栏推荐
猜你喜欢
4.二分查找
Cookie和Session的区别
甲、乙机之间采用方式 1 双向串行通信,具体要求如下: (1)甲机的 k1 按键可通过串行口控制乙机的 LEDI 点亮、LED2 灭,甲机的 k2 按键控制 乙机的 LED1
FAQs and answers to the imitation Niuke technology blog project (III)
(original) make an electronic clock with LCD1602 display to display the current time on the LCD. The display format is "hour: minute: Second: second". There are four function keys K1 ~ K4, and the fun
Differences among fianl, finally, and finalize
Wei Pai: the product is applauded, but why is the sales volume still frustrated
2.C语言初阶练习题(2)
仿牛客技术博客项目常见问题及解答(二)
3.猜数字游戏
随机推荐
[the Nine Yang Manual] 2016 Fudan University Applied Statistics real problem + analysis
JS interview questions (I)
Caching mechanism of leveldb
7.数组、指针和数组的关系
【九阳神功】2016复旦大学应用统计真题+解析
5. Function recursion exercise
5.函数递归练习
Redis的两种持久化机制RDB和AOF的原理和优缺点
[hand tearing code] single case mode and producer / consumer mode
强化学习系列(一):基本原理和概念
Using spacedesk to realize any device in the LAN as a computer expansion screen
透彻理解LRU算法——详解力扣146题及Redis中LRU缓存淘汰
更改VS主题及设置背景图片
The difference between overloading and rewriting
Reinforcement learning series (I): basic principles and concepts
简单理解ES6的Promise
Programme de jeu de cartes - confrontation homme - machine
【九阳神功】2017复旦大学应用统计真题+解析
5. Download and use of MSDN
Detailed explanation of redis' distributed lock principle