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

盛最多水的容器

题目链接:11. 盛最多水的容器 - 力扣(LeetCode)

 

 

 

 

 

 

 

 

 

解析:

看数量级最差只能是 o(n logn)的方法,一眼排序,排序之后呢,扫描线,想一下有一根平行x轴的线从上往下,y依次降低,每次的面积就是此时的y * 最远能交叉的两条线,

所以排序完之后,就从最后一个数向前遍历,每次都是第i个数 * (i之后最大和最小的两个下标差)

注意:不排序也行,转换一下x和y就好了,那样就是o(n)

 

 

 

class Solution {
public:int maxArea(vector<int>& height) {vector<std::pair<int, int> > nums;for (int i = 0; i < height.size(); i++) {nums.emplace_back(std::make_pair(height[i], i));}std::sort(nums.begin(), nums.end(), [](const pair<int, int>& a, const pair<int, int>& b) {return a.first < b.first;});int n = nums.size();int max_index = std::max(nums[n - 1].second, nums[n - 2].second);int min_index = std::min(nums[n - 1].second, nums[n - 2].second);int max_area = nums[n - 2].first * (max_index - min_index);for (int i = n - 3; i >= 0; i--) {min_index = std::min(min_index, nums[i].second);max_index = std::max(max_index, nums[i].second);max_area = std::max(max_area, nums[i].first * (max_index - min_index));}return max_area;}
};

 

http://www.wuyegushi.com/news/67.html

相关文章:

  • 练习cf939A. Love Triangle
  • CVE-2023-46604 Apache ActiveMQ 远程代码执行漏洞 (复现)
  • Day26
  • 假期学习
  • 第二十四天
  • 在python虚拟环境中遇到 ​​No module named pip​​ 错误解决方案
  • 从零开始的web前端学习-React
  • tinymce富文本编辑器使用
  • 微软C语言编译器‘strcpy‘: This function or variable may be unsafe. Consider using strcpy_s instead
  • Java学习Day26
  • 线性基(个人学习笔记)
  • 花菖蒲 2025.7.26 模拟赛题解
  • 信任的意外反射:深入解析LLVM循环向量化器中的罕见编译错误
  • P1429 平面最近点对(加强版)[骗分解法]
  • 7.26 - GENGAR
  • P4565 [CTSC2018] 暴力写挂 题解
  • 第十二篇
  • 计算机网络——应用层 - 浪矢
  • 《第一节:跟着符映维学C语言---配置c语言开发环境》
  • 再见,大连
  • 影视软件集合分享
  • 7.26总结
  • geogebra 2 进阶
  • 20250726GF模拟赛
  • java学习
  • 深入解析Passkeys背后的密码学原理
  • CCF中学生计算机程序设计-基础篇-第一章-函数练习答案
  • 第二次总结——关系中的魔法语言
  • 2025.7 Solar应急响应-
  • 【计算几何】Largest Quadrilateral