std::execution统一CPU/GPU/NPU异构编程的新范式
2026/10/18 2:51:25
n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。算法思路:
由于需要计算面积,肯定是需要同时获取两侧的数值,直接定义左右指针,然后计算面积,后向中间移动指针,由于面积是两侧更低的高度一边乘上长度所得,所以更大面积肯定是需要移动低一侧的指针向内找更高的数值!
class MaxArea{ public int maxArea(int[] height){ int left = 0; int right = height.length - 1; int ans = 0; while(left < right){ int area = (right - left) * Math.min(height[left], height[right]); ans = Math.max(area,ans); if (height[left] < height[right]){ left++; }else{ right--; } } return ans; } }注:只为记录自己的练习过程,方便回顾!