全部评论
dp了
class Solution { public: int maxProduct(vector<int>& nums) { int n = nums.size(); int res = nums[0]; int maxk = nums[0], mink = nums[0]; for(int i = 1; i < n; i++) { int a = nums[i] * maxk, b = nums[i] * mink; maxk = max(nums[i], max(a, b)); mink = min(nums[i], min(a, b)); //cout << maxk << mink << endl; res = max(res, maxk); } return res; } };
力扣152
动归 一个数组存当前最大值 一个数组存当前最小值 最大值乘负数有可能转为最小值 最小值乘负数可能转为最大值 反之…
class Solution { public: /** * Note: 类名、方法名、参数名已经指定,请勿修改 * * * 找到数组中乘积最大的连续子数组,并返回乘积 * @param nums long长整型 vector 原始数组 * @return long长整型 */ long long GetSubArrayMaxProduct(vector<long> &nums) { // write code here int numsLen = nums.size(); long long mx, mi; mx = 1; mi = 0; long long res = INT64_MIN; for (int i = 0; i < numsLen; ++i) { if (nums[i] > 0) { mx = mx * nums[i]; mi = mi * nums[i]; } else if (nums[i] < 0) { if (mi == 0) { mi = nums[i] * mx; mx = 1; } else { mx = mi * nums[i]; mi = mx * nums[i]; } } else { mx = 1; mi = 0; } res = max(mx, res); } return res; } };
LC152原题
力扣原题152,我也没全a,只有70%,少考虑了一个判定条件,寄了寄了
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
03-22 18:43
门头沟学院 Java 点赞 评论 收藏
分享
04-21 16:05
北京邮电大学 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享