力扣学习笔记——11. 盛最多水的容器

news/2024/11/19 21:21:02/

链接:https://leetcode.cn/problems/container-with-most-water/

11. 盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

我自己的暴力解法

class MySolution
{
public:int maxArea(std::vector<int> &height){if (0 == height.size()){std::cout << "error,input error size is 0!" << std::endl;return 0;}int max_area_value = 0;int max_area_temp = 0;for (int i = 0; i < height.size(); ++i){for (int j = i; j < height.size(); ++j){max_area_temp = std::min(height[i], height[j]) * (j - i);std::cout << "i = " << i << " j = " << j << ",max_area_temp = " << max_area_temp << std::endl;if (max_area_temp > max_area_value){max_area_value = max_area_temp;}}}return max_area_value;}
};

虽然也能求出来,但是肯定超时,效率很低。

官方题解

看了官方题解,自己也重新写了一遍如下:

class Solution {
public:int maxArea(vector<int>& height) {if (0 == height.size()){std::cout << "error,input error size is 0!" << std::endl;return 0;}int max_area_value = 0;int max_area_temp = 0;int left_index = 0;int right_index = height.size() - 1;for (int i = 0; i < height.size(); ++i){if (left_index >= right_index){break;}max_area_temp = std::min(height[left_index], height[right_index]) * (right_index - left_index);if (max_area_temp > max_area_value){max_area_value = max_area_temp;}if (height[left_index] < height[right_index]){left_index++;}else{right_index--;}}return max_area_value;}
};

官方剪短版本。代码写的很剪短优美。

class Solution {
public:int maxArea(vector<int>& height) {int i = 0, j = height.size() - 1, res = 0;while(i < j) {res = height[i] < height[j] ? max(res, (j - i) * height[i++]): max(res, (j - i) * height[j--]); }return res;}
};

http://www.ppmy.cn/news/1211559.html

相关文章

火星加载WMTS服务

这是正常的加载瓦片 http://192.168.1.23:8008/geoserver/mars3d/gwc/service/wmts?tilematrixEPSG%3A4326%3A7&layermars3d%3Abuffer&style&tilerow46&tilecol197&tilematrixsetEPSG%3A4326&formatimage%2Fpng&serviceWMTS&version1.0.0&…

【刷题】<洛谷> P1308 统计单词数

题目描述 一般的文本编辑器都有查找单词的功能&#xff0c;该功能可以快速定位特定单词在文章中的位置&#xff0c;有的还能统计出特定单词在文章中出现的次数。 现在&#xff0c;请你编程实现这一功能&#xff0c;具体要求是&#xff1a;给定一个单词&#xff0c;请你输出它…

人工智能基础_机器学习024_梯度下降进阶_L1正则可视化图形---人工智能工作笔记0064

然后我们就来用代码实现一下L1正则的可视化,我们来看看 首先导入 import numpy as np 数学计算 import matplotlib.pyplot as plt 画图用的 然后我们把L1正则的公式写出来 可以看到L1的正则 其实就是w1和w2的绝对值相加对吧 然后这里我们写一个公式: f(x,y) = |x|+|y| …

Flink之Catalog

Catalog Catalog概述Catalog分类 GenericInMemoryCatalogJdbcCatalog下载JAR包及使用重启操作创建Catalog查看与使用Catalog自动初始化catalog HiveCatalog下载JAR包及使用重启操作hive metastore服务创建Catalog查看与使用CatalogFlink与Hive中操作自动初始化catalog 用户自定…

U盘不可以访问的维护

u盘打不开&#xff0c;可按下图&#xff0c;设置&#xff1a;winR→gpedit.msc&#xff1b;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后&#xff0c;选择“未配置”&#xff0c;如下图

Flink之Java Table API的使用

Java Table API的使用 使用Java Table API开发添加依赖创建表环境创建表查询表输出表使用示例 表和流的转换流DataStream转换成表Table表Table转换成流DataStream示例数据类型 自定义函数UDF标量函数表函数聚合函数表聚合函数 API方法汇总基本方法列操作聚合操作Joins合并操作排…

SpringCloud——服务注册——Zookeeper

没有安装Centos7&#xff0c;所以无法安装Zookeeper。 提供者模块代码&#xff1a; https://gitee.com/lixiaogou/cloud2020/tree/master/cloud-provider-payment8004 消费者模块代码&#xff1a; https://gitee.com/lixiaogou/cloud2020/tree/master/cloud-consumerzk-ord…

如何对element弹窗进行二次封装

方式一使用$refs 个人比较喜欢用这种的 通过$refs打开的同时 还能给弹窗组件传参 一些框架使用的也是这种方式 父组件 <template><div><el-button type"text" click"handleDialogOpen">打开嵌套表单的 Dialog</el-button><Dia…