贪心与暴力算法的解释

一、什么是暴力法?
暴力法就是把所有可能的两条线组合全部算一遍,找出最大面积。
比如数组[1,8,6,2,5,4,8,3,7](以双指针求最大水容积为例)

  • 第 0 根 和 第 1 根 → 算面积
  • 第 0 根 和 第 2 根 → 算面积
  • 第 0 根 和 第 3 根 → 算面积
  • ……
  • 第 1 根 和 第 2 根
  • 第 1 根 和 第 3 根
    ……
    所有两量组合全部算一遍

缺点:时间复杂度O(n^2)
数组长度10万->要算100亿次,直接超时

二、什么是贪心?
贪心的意思就是:每一步都只做当前看起来最好、最有利的选择,不回头看,不全局计算。
一句话:
走一步看一部,每一步都选当前最优->最终得到全局最优。
贪心不是“全局”,而是每一步都做当下最好的选择。

这道题里“贪心移动指针”到底是什么意思?
规则只有一句话:
谁短,谁就往中间移动!
为什么要移动短的那一边?
盛水高度=短边决定
宽度=两条线距离

情况1:左边短
如果你移动长边:
宽度会变小
高度最多还是原来的短边高度
面积只会变小,不可能变大!

所以移动长边没用,必须移动短边,才有可能变高!

情况2:右边短
同理,必须移动右边(短边)往中间走,才可能遇到更高的线。

方法 思路 效率 能不能过
暴力法 全部算一遍 O (n²) 慢 大数据量超时
贪心 每次移动短边,只算必要的 O (n) 快 完美通过

总结:
暴力法:笨方法,全部算一遍,很慢。
贪心:聪明方法,每一步选当前最优,很快。
贪心移动指针:谁短谁往中间走,因为只有这样面积才可能变大

posted @ 2026-03-24 19:19  AlexXuu  阅读(2)  评论(0)    收藏  举报