leetcode链接:
https://leetcode.cn/problems/container-with-most-water/
方案二:双指针(对撞指针)
算法的相关思想:
https://zhuanlan.zhihu.com/p/71643340
https://blog.csdn.net/lady_killer9/article/details/110246226
对撞指针 – 伪代码:
1 2 3 4 5 6 7 8 9 10 11 12
| function fn (list) { var left = 0; var right = list.length - 1;
while (left <= right) { left++; ... ... right--; } }
|
可以正常执行的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int l_left=0,l_right=(height.length-1),maxarea = 0,temp; while(l_left < l_right){ temp = (l_right - l_left) * ((height[l_left]<height[l_right]) ? height[l_left]:height[l_right]);
if (temp > maxarea) { maxarea = temp; } if (height[l_left] > height[l_right]){ l_right--; } else { l_left++; } } return maxarea;
|
方案一:暴力枚举
遇到的问题:运行超时,无法正常执行
1 2 3 4 5 6 7 8 9 10
| int maxarea = (height[1]<height[0]) ? height[1]:height[0], temp; for (int i = 0; i < height.length-1; i++) { for (int j = i+1 ; j < height.length; j++) { temp = (j - i) * ((height[i]<height[j]) ? height[i]:height[j]); if (temp > maxarea){ maxarea = temp; } } } return maxarea;
|