#include <stdio.h>
int main() {
int function(int arr[], int len);
int arr[] = {2,3,-1,4,0,8,2};
int len = sizeof(arr) / sizeof(arr[0]);
printf("连续子数组最大乘积: %d\n", function(arr,len));
return 0;
}
int function(int arr[], int len) {
if (len == 0) {
return 0;
}
int max = arr[0]; //当前最大值
int min = arr[0]; //当前最小值
int result = arr[0]; //全局最大值
for (int i = 1; i < len; i++) {
// 更新当前最大和最小值
max = (arr[i] > max * arr[i]) ? arr[i] : max * arr[i];
min = (arr[i] < min * arr[i]) ? arr[i] : min * arr[i];
// 更新全局最大值
result = (max > result) ? max : result;
}
return result;
}
(20)连续子数组最大乘积
最新推荐文章于 2024-05-21 20:29:42 发布