思路:

很经典的双指针题目;定义首尾指针,因为是算面积,所以比较首尾指针所指向的元素,用较小的元素与这两个元素之间的距离相乘,然后与面积进行比较,保存较大的面积后移动较小一方的指针,如此循环....

Java代码:

class Solution {
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length-1;
        int maxArea = 0;
        while (left < right) {
            if (height[left] < height[right]) {
                if (height[left] *(right - left) > maxArea) {
                    maxArea = height[left] * (right - left);
                }
                left++;
            } else {
                if (height[right] * (right - left) > maxArea) {
                    maxArea = height[right] * (right - left);
                }
                right--;

            }
    
        }
        return maxArea;
    }
}

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐