码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode: Jump Game Total 解题报告

时间:2014-10-22 19:51:21      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   ar   使用   

Maximum Product Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.
Array Dynamic Programming

 

SOLUTION 1

使用DP来做:

因为有正负值好几种情况。所以我们计算当前节点最大值,最小值时,应该考虑前一位置的最大值,最大值几种情况。(例如:如果当前为-2, 前一个位置最小值为-6,最大值为8,那么当前最大值应该是-2*-6 = 12)

对于以index位置结尾的连续子串来说,计算最大,最小值可以三种选择:

1. 当前值* 前一位置的最大值。

2. 当前值* 前一位置的最小值。

3. 丢弃前一伴置的所有的值

我们对这三项取最大值,最小值,就可以得到当前的最大乘积,最小乘积。

bubuko.com,布布扣
 1 package Algorithms.array;
 2 
 3 public class MaxProduct {
 4     public static int maxProduct(int[] A) {
 5         if (A == null || A.length == 0) {
 6             return 0;
 7         }
 8         
 9         // record the max value in the last node.
10         int DMax = A[0];
11         
12         // record the min value in the last node.
13         int DMin = A[0];
14         
15         // This is very important, should recode the A[0] as the initial value.
16         int max = A[0];
17         
18         for (int i = 1; i < A.length; i++) {
19             int n1 = DMax * A[i];
20             int n2 = DMin * A[i];
21             
22             // we can select the former nodes, or just discade them.
23             DMax = Math.max(A[i], Math.max(n1, n2));
24             max = Math.max(max, DMax);
25             
26             // we can select the former nodes, or just discade them.
27             DMin = Math.min(A[i], Math.min(n1, n2));
28         }
29         
30         return max;
31     }
32     
33     /*
34      * 作法是找到连续的正数,不断相乘即可。
35      * */
36     public static void main(String[] strs) {
37         int[] A = {2, 3, -2, 4};
38         
39         System.out.println(maxProduct(A));
40     }
41 }
View Code

 

LeetCode: Jump Game Total 解题报告

标签:des   style   blog   http   color   io   os   ar   使用   

原文地址:http://www.cnblogs.com/yuzhangcmu/p/4043933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!