leetCode_Maximum Product Subarray
2016-06-05 19:56
375 查看
题意:给定一列数,找出乘积最大的子数组
解法:这道题非!常!山!寨!思路很简单,用temp记录当前乘到哪儿了。如果temp为正数,则更新(由于数组都是整数所以肯定越乘越大),若temp为负数则保存当前值与第一个负数的temp相除的值。要注意若某个元素为0时,需要将temp初始化。上代码。maxVal表示第一个出现的temp为负数的值。
解法:这道题非!常!山!寨!思路很简单,用temp记录当前乘到哪儿了。如果temp为正数,则更新(由于数组都是整数所以肯定越乘越大),若temp为负数则保存当前值与第一个负数的temp相除的值。要注意若某个元素为0时,需要将temp初始化。上代码。maxVal表示第一个出现的temp为负数的值。
int maxProduct(vector<int>& nums) { int temp=1,i,j,k,maxVal=INT_MAX,size=nums.size(),res=nums[0]; for(i=0; i<size; i++) { if(nums[i]==0) { res=max(res,0); temp=1; maxVal=INT_MAX; continue; } temp=temp*nums[i]; if(temp>0)res=max(res,temp); else { if(maxVal==INT_MAX) { maxVal=temp; res=max(res,temp); } else res=max(res,temp/maxVal); } } return res; }
相关文章推荐
- 【Android】UI设计之界面布局
- Linux系统调优1
- 【Android 基础】android导入工程出现红色感叹号
- matlab下libjpeg工具箱(jpegtbx1.4)的安装与配置,包括IJG库的编译配置(综合整理网上资料)
- 从一个实例中学习DTW算法
- 1605 - Building for UN
- 第十四周进度条
- reactjs入门到实战(六)---- ReactJS组件API详解
- 驱动: i2c驱动 >>>>
- bzoj2124 等差子序列
- 高通8X16的TP笔记(一)
- SQL 2008 视频总结(一)
- 2016-6-5
- 【心得】单调队列
- java中的枚举
- Delphi 文件读写
- 学习android 笔记(4):如何获取屏幕的相关属性以及dp 、dip、dpi 、px的概念
- MATLAB数据拟合工具在数学建模中的运用
- 如何培养研发团队的凝聚力
- div垂直居中于父容器 box-pack 属性和box-align属性控制