思路:
统计数组中正数、负数、0的个数:
1.数组中有多于一个零则最大乘积为0;2.数组中只有一个零,而有奇数个负数,则最大乘积为0;
3.数组中只有一个零,而有偶数个负数,则最大乘积为非0的元素的乘积;
4.数组中没有零,而有奇数个负数,则最大乘积为除去绝对值最小的负数的乘积;
5.数组中没有零,而有偶数个负数,则最大乘积为除去最小的正数的乘积。
这样时间复杂度为O(n)。
也可以利用空间换时间的方式,见编程之美-2.13子数组的最大乘积
思路:
统计数组中正数、负数、0的个数:
1.数组中有多于一个零则最大乘积为0;2.数组中只有一个零,而有奇数个负数,则最大乘积为0;
3.数组中只有一个零,而有偶数个负数,则最大乘积为非0的元素的乘积;
4.数组中没有零,而有奇数个负数,则最大乘积为除去绝对值最小的负数的乘积;
5.数组中没有零,而有偶数个负数,则最大乘积为除去最小的正数的乘积。
这样时间复杂度为O(n)。
也可以利用空间换时间的方式,见编程之美-2.13子数组的最大乘积