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

宁波做网站优化多少钱百度官网app下载

宁波做网站优化多少钱,百度官网app下载,写作网站的文风,最有效的推广学校的方式LeetCode-双指针-盛最多水的容器 ✏️ 关于专栏:专栏用于记录 prepare for the coding test。 文章目录 LeetCode-双指针-盛最多水的容器📝 盛最多水的容器🎯题目描述🔍 输入输出示例🧩题目提示🧪枚举法&am…

618224d51d66b92b423588150f25f3a7-1746706818078-1-1746790482186-1-1746797747208-4

LeetCode-双指针-盛最多水的容器

✏️ 关于专栏:专栏用于记录 prepare for the coding test


文章目录

  • LeetCode-双指针-盛最多水的容器
    • 📝 盛最多水的容器
      • 🎯题目描述
      • 🔍 输入输出示例
      • 🧩题目提示
      • 🧪枚举法
      • 🧪双指针
        • 💡思路
        • ⏱️ 复杂度分析
      • 🌟 总结与易错点
        • ✅ 核心知识点
          • 双指针思想(Two Pointers)
          • 贪心思想的局部决策

📝 盛最多水的容器

🎯题目描述

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。

**说明:**你不能倾斜容器。

🔗题目链接:盛最多水的容器

🔍 输入输出示例

示例 1:

img
输入:[1,8,6,2,5,4,8,3,7]
输出:49 
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

示例 2:

输入:height = [1,1]
输出:1

🧩题目提示

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

🧪枚举法

暴力枚举法
既然要求两条线构成的最大容积,那就计算这些线两两构成的容积大小,以得到最大的容积。这个方法只需要两层for循环即可。但这个算法的时间复杂度过高,最终会导致超时。

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

🧪双指针

💡思路

我们需要找出两条线段,使得它们之间形成的容器能够容纳最多的水。容积的计算公式为:

容积 = (右指针 - 左指针) × min(height[左], height[右])

暴力法 是枚举所有组合,时间复杂度为 O(n²),不可接受。
优化策略:使用双指针,即:

  1. 初始化两个指针 leftright,分别指向数组的两端。
  2. 计算当前容器的面积 area = (right - left) * min(height[left], height[right])
  3. 为了找到更大的面积,移动较短的那一边的指针,因为这是面积增大的唯一可能。
  4. 注意:当左右两边高度相等时候,需左右指针同时移动。
  5. 每次移动后重新计算面积并更新最大值。
  6. 直到 left >= right,结束循环。
image-20250509212656206

image-20250509212747232

image-20250509211503966

image-20250509212608228

image-20250509212011396 image-20250509212103822
class Solution {
public:int maxArea(vector<int>& height) {int left = 0, right = height.size() - 1;int max_area = 0;while (left < right) {int h = min(height[left], height[right]);int w = right - left;max_area = max(max_area, h * w);// 关键:移动较短的那一边if (height[left] < height[right]) left++;else if (height[left] > height[right]) right--;else { // 两边高度相等时,双指针同时移动left++;right--;}}return max_area;}
};
⏱️ 复杂度分析
项目复杂度
时间复杂度O(n)
空间复杂度O(1) 原地操作

🌟 总结与易错点

✅ 核心知识点
双指针思想(Two Pointers)
  • 双指针是一种常见的线性扫描技巧,适用于在有序结构上进行区间收缩、滑动窗口等操作。

  • 本题用双指针分别从数组两端向中间推进,避免了穷举所有组合(暴力 O(n²))的低效。

  • 非零元素交换顺序错乱;

  • 不清楚原地操作的含义,使用辅助数组(违反题意);

  • 忘记处理全为 0 或全为非 0 的边界情况。

贪心思想的局部决策
  • 每次比较 height[left]height[right],只移动较小的那一边,因为移动较大的一边不会让面积变大。

  • 这个决策是贪心的 —— 每次尝试“可能变大的方向”,排除不可能提升面积的选择。

  • 每次比较 height[left]height[right],只移动较小的那一边,因为移动较大的一边不会让面积变大。

  • 这个决策是贪心的 —— 每次尝试“可能变大的方向”,排除不可能提升面积的选择。
    ❌ 易错点修正
    ❌ 忽略两边相等时应双指针同时移动,导致错过最大面积
    ❌ 忘记更新最大值(只更新指针,不更新 area)
    ❌ 使用暴力法,时间复杂度过高
    d1fded34d21c16a44c687a112865ab0-1727508219022-1-1742981758298-1-1743052895607-3-1746707028431-7-1746790482186-3

http://www.dtcms.com/wzjs/7945.html

相关文章:

  • 如何做pdf电子书下载网站成都短视频代运营
  • 合肥做网站首选 晨飞网络seo推广招聘
  • 做网站要注册那些商标北京优化网站建设
  • 网站图标怎么换天津网站建设优化
  • 如何创建电子商务网站站长工具ip地址查询
  • 网站建设及运维合同百度网络推广怎么收费
  • 团风做网站aso优化服务站
  • 桐城网站建设网推获客平台
  • 做美女网站流量seo挂机赚钱
  • 专业购物网站建设报价网络营销经典案例
  • 贵州省住房和城乡建设厅官网站首页外贸网站平台都有哪些 免费的
  • 国产做的视频网站百度关键词推广网站
  • 深圳网站建制作网络营销是学什么
  • 日本做设计的网站有哪些方面武汉seo网站推广培训
  • wordpress页面第一次访问被劫持cpu优化软件
  • 商业网站建设知识点灰色产业推广引流渠道
  • 中山企业网站建设公司百度搜索数据
  • 东莞互联网营销网站建设推广形式
  • 做网站怎么电话约客户视频剪辑培训班
  • 城北区建设局网站关键词搜索点击软件
  • 做爰全过程的视频的网站关键词推广优化外包
  • 建站网站方法推广什么app佣金高
  • 某拍卖公司企业网站源码网络精准推广
  • 建设招标项目常挂网站有哪些域名注册网站查询
  • 传奇私服网站建设视频教学网站怎么搭建
  • 中英企业网站模板百度网站搜索排名
  • 优化好的网站陕西seo排名
  • 网站建设哈尔滨app开发2注册商标查询官网入口
  • 河南省做网站的企业网络服务商主要包括哪些
  • 汕头网站制作电话2020十大网络热词