LeetCode 152

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.

 1 /*************************************************************************
 2     > File Name: LeetCode152.c
 3     > Author: Juntaran
 4     > Mail: Jacinthmail@gmail.com
 5     > Created Time: Fri 29 Apr 2016 03:46:31 PM CST
 6  ************************************************************************/
 7 
 8 /*************************************************************************
 9 Maximum Product Subarray
10 
11 Find the contiguous subarray within an array (containing at least one number)
12 which has the largest product.
13 
14 For example, given the array [2,3,-2,4],
15 the contiguous subarray [2,3] has the largest product = 6.
16 ************************************************************************/
17 
18 #include<stdio.h>
19 
20 void maxAndmin( int a, int b, int c, int* max, int* min )
21 {
22     if( a > b )
23     {
24         if( a > c )
25         {
26             *max = a;
27             *min = b > c ? c : b;
28         }
29         else
30         {
31             *max = c;
32             *min = b;
33         }
34     }
35     else
36     {
37         if( a > c )
38         {
39             *max = b;
40             *min = c;
41         }
42         else
43         {
44             *max = b > c ? b : c;
45             *min = a;
46         }
47     }
48 }
49 
50 int maxProduct( int* nums, int numsSize )
51 {
52     int result = nums[0];
53     int lastMax = nums[0];
54     int lastMin = nums[0];
55     int i;
56     for( i=1; i<numsSize; i++ )
57     {
58         maxAndmin( nums[i], nums[i]*lastMax, nums[i]*lastMin, &lastMax, &lastMin );
59         result = lastMax > result ? lastMax : result;
60     }
61     printf("result is %d
", result);
62     return result;
63 }
64 
65 int main()
66 {
67     int nums[] = {-2, 3, -4};
68     int numsSize = 3;
69     maxProduct( nums, numsSize );
70     return 0;
71 }
原文地址:https://www.cnblogs.com/Juntaran/p/5446787.html