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

如何用模版做网站苏州seo网站优化软件

如何用模版做网站,苏州seo网站优化软件,如何做聚合类网站,网站编辑 seo是什么 百度知道盛最多水的容器:Swift 解法与思路分析 📌 问题描述 给定一个长度为 n 的整数数组 height,每个元素表示在横坐标 i 处的一条垂直线段的高度。任意两条线段和 x 轴构成一个容器,该容器可以装水,水量的大小由较短的那条…

盛最多水的容器:Swift 解法与思路分析

📌 问题描述

给定一个长度为 n 的整数数组 height,每个元素表示在横坐标 i 处的一条垂直线段的高度。任意两条线段和 x 轴构成一个容器,该容器可以装水,水量的大小由较短的那条线段和两线之间的距离决定。

请你找出其中能够容纳最多水的两条线,并返回它们之间形成容器所能容纳的最大水量。

示例:

输入: height = [1,8,6,2,5,4,8,3,7]
输出: 49

容器的两条边是第 2 条线(高度为 8)和第 9 条线(高度为 7),它们之间的距离是 7,所以最大面积是 min(8,7) * (8 - 1) = 7 * 7 = 49


🐢 暴力解法(仅供参考)

在讲双指针之前,我们也可以从最朴素的方式思考问题:枚举所有可能的两条线段,计算它们之间可以装多少水,最后取最大值。

这种方式虽然思路直观,但时间复杂度为 O(n^2),在数据量大时效率很低。

Swift 实现:

func maxAreaBruteForce(_ height: [Int]) -> Int {var maxArea = 0let n = height.countfor i in 0..<n {for j in i+1..<n {let h = min(height[i], height[j])let w = j - ilet area = h * wmaxArea = max(maxArea, area)}}return maxArea
}

虽然简单,但这种方法会超时,不推荐在面试中使用,适合用于验证答案或学习过程中的参考实现


💡 解题思路

这是一个典型的双指针问题。

我们可以从数组的两端开始,使用两个指针分别指向最左和最右的线段。每次计算它们之间的容器所能容纳的水量,然后移动其中较短的一侧。

移动较短的一侧的原因是:水的高度是由较短的那条线决定的,移动较长的一侧不会获得更大的容积,但移动较短的一侧可能会找到一条更高的线,从而提升水量。

步骤如下:

  1. 初始化两个指针 left = 0right = height.count - 1
  2. 计算当前的水量:min(height[left], height[right]) * (right - left)
  3. 更新最大水量。
  4. 移动较短边的指针(如果左边短,则 left += 1,否则 right -= 1)。
  5. 重复上述步骤,直到两个指针相遇。

💻 Swift 代码实现

func maxArea(_ height: [Int]) -> Int {var left = 0var right = height.count - 1var maxArea = 0while left < right {let h = min(height[left], height[right])let w = right - leftlet area = h * wmaxArea = max(maxArea, area)// 移动较短的那一侧if height[left] < height[right] {left += 1} else {right -= 1}}return maxArea
}

📊 时间与空间复杂度分析

  • 时间复杂度:O(n)
    每个指针最多走一次,所以是线性时间复杂度。

  • 空间复杂度:O(1)
    只使用了常数级别的额外变量。


✨ 优化建议

这个解法已经是最优解法之一。如果你尝试使用两层 for 循环暴力解法,时间复杂度将会是 O(n^2),在输入规模较大时效率非常低。而双指针方法能够在线性时间内求解,是在面试中非常推荐的策略。


🧪 测试一下

let test = [1,8,6,2,5,4,8,3,7]
let result = maxArea(test)
print("最大水量是:\\(result)")  // 输出 49

🏁 总结

  • 本题的核心在于意识到两条边之间的水量只与短边有关,因此采用双指针、移动短边是一种非常聪明且高效的方式。
  • 这是 LeetCode 中非常经典的一道题,也能很好地锻炼你的思维方式是否具备“从整体最优转向局部策略”的能力。

如果你喜欢这样的算法题解风格,欢迎点赞、评论或者关注我一起交流 Swift、算法与面试技巧!

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

相关文章:

  • 阿里云最新消息windows优化大师收费吗
  • 做资质去哪个网站填资料搜索引擎优化的核心是
  • 沈阳网站制作培训网页生成器
  • 厦门市市场开发建设服务中心网站博客可以做seo吗
  • 睢县做网站跨境电商关键词工具
  • 有什么国外的黄网站网站站点查询
  • 建设一个用教育网站百度怎么做关键词优化
  • 页面设计器翻译成英文seo人员工作内容
  • 能自己在家做网站吗软媒win7优化大师
  • 投资者教育网站建设搜索引擎是什么意思啊
  • 网站案例介绍seo排名快速
  • 北京专业网站设计报价山西seo和网络推广
  • 进不去的网站用什么浏览器电工培训机构
  • 做预算的网站网络推广运营团队
  • 营销型网站建设要纯手工seo公司
  • html5模板之家如何将网站的关键词排名优化
  • 做网站搞什么流量冯宗耀seo教程
  • 做网站宣传有用吗交换友情链接的条件
  • 重庆网站制作公司网络营销怎么做推广
  • 深圳市官网网站建设报价小说关键词生成器
  • 网站管理的主要工作有哪些沪深300指数基金
  • 网站设计的摘要营销策略理论
  • 1688网页登录济南网络优化网站
  • 长沙优化网站建设搜索引擎优化的根本目的
  • 如何查询网站空间大小百度收录提交入口网址
  • 网站设计第一步怎么做网络市场调研的方法
  • 昌吉州回族自治州建设局网站深圳网页搜索排名提升
  • 重庆观音桥1号关键词优化步骤简短
  • 个人网站建设论文中期报告如何在各大平台推广
  • 展示类网站建设台州seo优化公司