当前位置: 首页 > news >正文

【leetcode hot 100 11】移动零

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

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;
    }
}

错误分析:当涉及的数组较大时,会超出时间限制在这里插入图片描述

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

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,保存值比较大的那一个

相关文章:

  • 道可云人工智能每日资讯|深圳将设立人工智能和机器人产业基金
  • VMware各个软件的作用
  • javascript this 关键字
  • 联想 SR590 服务器 530-8i RAID 控制器更换损坏的硬盘
  • 动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
  • 【面试】Java 之 String 系列 -- String 为什么不可变?
  • Linux Kernel Connection Tracking Table
  • ES的简单讲解
  • 【量化策略】动量追踪策略
  • Tkinter 标准对话框
  • 【PromptCoder】使用 package.json 生成 cursorrules
  • AWS S3 如何设置公开访问权限?
  • Git系列详细介绍和操作
  • Flutter系列教程之(5)——常用控件Widget的使用示例
  • 深入理解 Spring 中的 `ThreadPoolTaskExecutor` 与 `ThreadPoolExecutor`
  • CC攻击防御策略全解析:技术实现与代码示例
  • 【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据
  • 【堆】堆的基本概念及操作,堆与优先队列
  • 航空装配自动化神器Ethercat转profient网关搭配机器人精准控制
  • 文章表中文章内容content字段存富文本数据,在大量数据的前提下关于优化查询速度的思考
  • 山西太原做网站/51链
  • 建设外包网站/注册google账号
  • 做网站外包公司名称/软文代写平台有哪些
  • 泰国清迈房产网站大全/百度推广一天费用200
  • 如何做明星的个人网站/扬州网络推广哪家好
  • 开源快速网站搭建平台/app推广代理去哪里找