【leetcode hot 100 11】移动零

一、暴力解法:两个 for 循环,外层循环遍历所有可能的左边界,内层循环遍历所有可能的右边界

java 复制代码
class Solution {
    public int maxArea(int[] height) {
        int max_area=0;
        for(int i=0; i<height.length; i++){
            for(int j=i+1; j<height.length; j++){
                int x = j-i;
                int y = height[i]<height[j]?height[i]:height[j];
                int area = x*y;
                max_area = max_area>area?max_area:area;
            }
        }
        return max_area;
    }
}

错误分析:当涉及的数组较大时,会超出时间限制

双指针:一个指向数组的头部,一个指向数组的尾部,然后我们计算当前两个指针所指向的边界能形成的容器的水容量,并更新最大值。

java 复制代码
class Solution {
    public int maxArea(int[] height) {
        int left=0, right=height.length-1;
        int max_area=0;

        while(left<right){
            int area = (right-left) * Math.min(height[left],height[right]);
            max_area = Math.max(max_area,area);

            // 保存值较大的边
            if (height[left]>height[right]){
                right--;
            }
            else{
                left++;
            }
        }
        return max_area;
    }
}

注意:

  • 有效利用Math.min()Math.max()函数
  • 在更新left和right,保存值比较大的那一个
相关推荐
圣保罗的大教堂27 分钟前
leetcode 541. 反转字符串 II 简单
leetcode
WLKQ35 分钟前
力扣——完全平方数
算法·leetcode·职场和发展
xxxmmc1 小时前
Leetcode 141 Linked List Cycle and Leetcode 142 Linked List Cycle II
算法·leetcode·快慢指针
wheeldown1 小时前
【蓝桥杯】每天一题,理解逻辑(1/90)【Leetcode 移动零】
c语言·leetcode·职场和发展·蓝桥杯
深图智能1 小时前
算法仿真平台搭建1-FFMPEG+RtspSever快速搭建一个RTSP服务器
c++·算法·ffmpeg·视频编解码
圣保罗的大教堂2 小时前
leetcode 1472. 设计浏览器历史记录 中等
leetcode
没明白白2 小时前
归并排序:分而治之的排序之道
数据结构·算法·排序算法
鸡鸭扣2 小时前
数据结构与算法:动态规划dp:买卖股票相关力扣题(下):309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费
数据结构·python·算法·leetcode·动态规划·力扣·dp
liruiqiang052 小时前
线性模型 - 支持向量机
人工智能·算法·机器学习·支持向量机
梅茜Mercy2 小时前
数据结构:二叉树的数组结构以及堆的实现详解
数据结构·算法