leetcode第11题 盛水最多的容器

leetcode第十一题 盛水最多的容器

第一种方式:暴力求解 时间复杂度是o(n^2)

  1. 我觉得和冒泡是有一些类似的,每次娶一个最小的高度,然后乘以底边的长度 对最大值进行记录
class Solution {
        public int maxArea(int[] height) {
            int max = 0;
            for (int i = 0; i < height.length; i++) {
                for (int j = i + 1; j < height.length; j++) {
                    int h = Math.min(height[i], height[j]);
                    if (h * (j - i) > max) {
                        max = h * (j - i);
                    }
                }
            }
            return max;
        }
    }

第二种方式(双指针对数组进行遍历)

虽然也是暴力递归 但是这种时间复杂度就小了很多

    class Solution {
        public int maxArea(int[] height) {
            //暴力递归  循环遍历就好了
            int maxarea = 0,l = 0,r = height.length -1;
            while(l < r){
                maxarea = Math.max(maxarea, Math.min(height[l],height[r]) * (r - l));
                if (height[l] < height[r])
                    l++;
                else
                    r--;

            }
            return maxarea;
        }
    }

你可能感兴趣的:(leetcode,leetcode,算法,java)