输入:[1,8,6,2,5,4,8,3,7] 输出:49目前某学生用如下java代码解决了此问题,设height数组长度为N,且N足够大,他的部分代码如下,请你判断他代码(maxArea函数)的时间复杂的以及额外的空间复杂度(不包括传入的height数组)分别为?
int calculateArea(int start, int end, int sHeight, int eHeight) {
int len = end - start;
int height = Math.min(sHeight, eHeight);
return len * height;
}
public int maxArea(int[] height) {
int maxLen = -1;
int arrLen = height.length;
for (int i = 0, j = arrLen - 1; i < arrLen; ) {
if (i == j) {
return maxLen;
}
int area = calculateArea(i, j, height[i], height[j]);
maxLen = Math.max(area, maxLen);
if (height[i] > height[j]) {
j--;
} else {
i++;
}
}
return 0;
}
O(N),O(1)
O(N),O(N)
O(N),O(logN)
O(NlogN),O(1)