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

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

链接: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.lryc.cn/news/226515.html

相关文章:

  • Spring Boot: 约定优于配置的软件设计思想
  • TCP触发海康扫码相机S52CN-IC-JQR-NNN25
  • ArcGIS:如何迭代Shp文件所有要素并分别导出为Shp文件?
  • [工业自动化-11]:西门子S7-15xxx编程 - PLC从站 - 分布式IO从站/从机
  • Linux技能篇-yum源搭建(本地源和公网源)
  • 电脑清灰涂硅脂后电脑CPU温度不降反升
  • 吴恩达《机器学习》8-1->8-2:非线性假设、神经元和大脑
  • services.Jenkins Additional property tags is not allowed
  • vColorPicker——基于 Vue 的颜色选择器插件
  • Direct3D粒子系统
  • 第24章_mysql性能分析工具的使用
  • 【Git】Merge/Rebase/Cherriy-Pick的区别
  • Python复习:序列(列表元组字符串)
  • DevChat助力成为软件开发的“钢铁侠”
  • c: struct sort descending and ascending in windows and Ubuntu
  • Python - 利用 OCR 技术提取视频台词、字幕
  • VUE页面导出PDF方案
  • 机器学习笔记 - WGAN生成对抗网络概述和示例
  • HoudiniVex笔记_P0_Houdini中文文档与翻译
  • 基于PowerWord的储能在主动配电网中的仿真研究
  • 并查集与最小生成树
  • 平面运动机器人的传感器外参标定
  • 【星海随笔】SDN neutron (二) Neutron-plugin(ML2)
  • 野火i.MX6ULL开发板检测按键evtest(Linux应用开发)
  • k8s存储
  • 数据分析实战 | 贝叶斯分类算法——病例自动诊断分析
  • 实用技巧:嵌入式人员使用http服务模拟工具模拟http服务器测试客户端get和post请求
  • P9836 种树
  • C# 查询腾讯云直播流是否存在的API实现
  • JAVA开源项目 于道前端项目 启动步骤参考