算法-求出整型数组s[n]中任意n-1个数的乘积的最大值,不能用除法,要求时间复杂度为o(n)


求出整型数组s[n]中任意n-1个数的乘积的最大值,不能用除法,要求时间复杂度为o(n)

 

public class TestRide {
	//第一种方法
	public static long ride2(int[] data) {
		int length = data.length;
		long[] front = new long[length];// 下标i之前的数的积(不包括i)
		long[] back = new long[length];// 下标i之后的数的积(不包括i)
		front[0] = 1;
		back[length - 1] = 1;
		for (int i = 1; i < length; i++) {
			front[i] = front[i - 1] * data[i - 1];
			back[length - i - 1] = back[length - i] * data[length - i];
		}

		long result = back[0];
		for (int i = 1; i < length; i++) {
			long temp = front[i] * back[i];
			if (temp > result) {
				result = temp;
			}
		}
		return result;
	} 
	
	public static void main(String[] args) {
		int[] data = new int[] { 5, 2, -5, 4, 9, -6, 1, 0, };
		System.out.println(ride(data));
	}

}

 

你可能感兴趣的:(时间复杂度)