152. Maximum Product Subarray (Array)

因为有负数,所以最小的也有可能变成最大,因此也要记录最小的cmin

99%:

 1 class Solution {
 2     public int maxProduct(int[] nums) {
 3         int r = nums[0];
 4         int cmax = r, cmin = r;
 5         for(int i = 1; i < nums.length; i++) {
 6             if(nums[i] < 0) {
 7                 int tmp = cmax;
 8                 cmax = cmin;
 9                 cmin = tmp;
10             }
11             cmax = Math.max(nums[i], cmax * nums[i]);
12             cmin = Math.min(nums[i], cmin * nums[i]);
13             r = Math.max(r, cmax);
14         }
15         return r;
16     }
17 }

 

posted @ 2018-07-27 03:58  jasoncool1  阅读(117)  评论(0)    收藏  举报