152. Maximum Product Subarray
来源:互联网 发布:关于linux 的书籍 编辑:程序博客网 时间:2024/06/10 00:39
LeetCode
- 地址:https://leetcode.com/problems/maximum-product-subarray/#/description
- 问题描述:求的是一个连续的子序列,使得乘积最大,注意因为都是整数,所以除了×0之外,都会让数的绝对值变大或者起码不变。那么可以理解成,0是分割点,如果都是正的,那么只需要对两个0+起始点和结束点划分的连续子序列不断求积即可,只要比记录的最大值大就好了。如果有负数的话就比较麻烦,比如-2,3,4,-5,-6这样,顺着乘就会发现,最大的是-2到-5,120,而其实是3到-6,360.所以问题在于顺着乘可能会出现这种情况,所以需要反着乘,同时比较两者哪个大。其实上述问题简单来说就是,如果最大序列被夹在3个负数中间假设是A,B,C,那么就需要判断A的绝对值大还是C的大,中间的B是没有影响的,所以用两种顺序一定能找到最大值。代码如下:
- 代码:
class Solution {public: int max(int a, int b) {return a > b ? a : b;} int maxProduct(vector<int>& nums) { int frontProduct = 1; int backProduct = 1; int ans = INT_MIN; int n = nums.size(); for (int i = 0; i < n; ++i) { frontProduct *= nums[i]; backProduct *= nums[n - i - 1]; ans = max(ans,max(frontProduct,backProduct)); frontProduct = frontProduct == 0 ? 1 : frontProduct; backProduct = backProduct == 0 ? 1 : backProduct; } return ans; }};
阅读全文
0 0
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- 152. Maximum Product Subarray
- Tensorflow 在损失函数中加入正则项(Normalization)
- 两个有序数组的中位数
- 第3章 启程——Windows编程基础. 学习笔记
- Java实现操作excel表格(基于poi.jar)
- 洛谷Oj-数的划分-递推/搜索+剪枝
- 152. Maximum Product Subarray
- 数据库链接
- Windows核心编程第一章笔记
- 处理Excel的类库主要有两种JXL 和POI和介绍.
- Linux C编程学习笔记(4):dup,dup2,fcntl系统调用
- LeetCode | 38. Count and Say
- 23.10 Admin features
- 公钥和私钥的区别
- Android Studio上传GitHub