 2019-2021 美团技术年货 前端篇调整一般分为三个部分:布局调整、动效调整、图片替换。下面的章节会进行逐一 介绍。 388 > 美团 2020 技术年货 新版积木工具栏效果图 布局调整 这里 UI 的需求是 NSButton 的宽度填充满整个 NSStackView,高度自定义。由于 此功能看起来过于简单,当时认为估时 0.5 天绰绰有余,可是没想到搭进去了 1 个工 作日加上 2 天周末的时间,因为无论如何设置 NSStackView 『中号间距』、『大号间距』等来划分信息层次。例如 beeshell 的 Button 组件,有三 种尺寸。实现效果如下图所示: 排版:边线 边线(边框)部分,需要统一元素的边框宽度、颜色和圆角,边线虽然对 UI 风 格的影响较小,但是不可或缺。beeshell 使用的边框宽度为一个物理像素,使用 RN 提供的 StyleSheet.hairlineWidth 接口实现;定义了三种灰度的边框颜色;主要使用 2px 的圆角。 639 1. 从 Stage 创建一个 Release 分支; 2. 进入开发阶段; 3. 如果 Stage 分支有变化,同步 Stage 分支; 4. 打包测试; 5. 测试通过,发布线上; 6. 发布线上之后,合回 Stage 分支。 为了适应单周发版,新的开发流程也引入了很多新的挑战。例如下图所示的一个 Branch 分支中涉及的六个关键点:创建分支、合入主干、主干变化通知、Merge0 码力 | 738 页 | 50.29 MB | 1 年前3 2019-2021 美团技术年货 前端篇调整一般分为三个部分:布局调整、动效调整、图片替换。下面的章节会进行逐一 介绍。 388 > 美团 2020 技术年货 新版积木工具栏效果图 布局调整 这里 UI 的需求是 NSButton 的宽度填充满整个 NSStackView,高度自定义。由于 此功能看起来过于简单,当时认为估时 0.5 天绰绰有余,可是没想到搭进去了 1 个工 作日加上 2 天周末的时间,因为无论如何设置 NSStackView 『中号间距』、『大号间距』等来划分信息层次。例如 beeshell 的 Button 组件,有三 种尺寸。实现效果如下图所示: 排版:边线 边线(边框)部分,需要统一元素的边框宽度、颜色和圆角,边线虽然对 UI 风 格的影响较小,但是不可或缺。beeshell 使用的边框宽度为一个物理像素,使用 RN 提供的 StyleSheet.hairlineWidth 接口实现;定义了三种灰度的边框颜色;主要使用 2px 的圆角。 639 1. 从 Stage 创建一个 Release 分支; 2. 进入开发阶段; 3. 如果 Stage 分支有变化,同步 Stage 分支; 4. 打包测试; 5. 测试通过,发布线上; 6. 发布线上之后,合回 Stage 分支。 为了适应单周发版,新的开发流程也引入了很多新的挑战。例如下图所示的一个 Branch 分支中涉及的六个关键点:创建分支、合入主干、主干变化通知、Merge0 码力 | 738 页 | 50.29 MB | 1 年前3
 electron中文教程
是一个EventEmitter. 通过 options 可以创建一个具有本质属性的 BrowserWindow . options Object width Integer - 窗口宽度,单位像素. 默认是 800 . height Integer - 窗口高度,单位像素. 默认是 600 . x Integer - 窗口相对于屏幕的左偏移位置.默认居中. y false . center Boolean - 窗口屏幕居中. minWidth Integer - 窗口最小宽度,默认为 0 . minHeight Integer - 窗口最小高度,默认为 0 . maxWidth Integer - 窗口最大宽度,默认无限制. maxHeight Integer - 窗口最大高度,默认无限制. resizable Boolean 0 控制像素.为了在播放器内保持一个 16:9 的高宽比例,我们可以调用这个api传入参数16/9 and[ 40, 50 ].第 二个参数不管网页中的额外的宽度和高度在什么位置,只要它们存在就行.只需要把网页中的所有额外的高度和宽度加 起来就行. options Object x Integer y Integer width Integer height Integer0 码力 | 203 页 | 2.72 MB | 1 年前3 electron中文教程
是一个EventEmitter. 通过 options 可以创建一个具有本质属性的 BrowserWindow . options Object width Integer - 窗口宽度,单位像素. 默认是 800 . height Integer - 窗口高度,单位像素. 默认是 600 . x Integer - 窗口相对于屏幕的左偏移位置.默认居中. y false . center Boolean - 窗口屏幕居中. minWidth Integer - 窗口最小宽度,默认为 0 . minHeight Integer - 窗口最小高度,默认为 0 . maxWidth Integer - 窗口最大宽度,默认无限制. maxHeight Integer - 窗口最大高度,默认无限制. resizable Boolean 0 控制像素.为了在播放器内保持一个 16:9 的高宽比例,我们可以调用这个api传入参数16/9 and[ 40, 50 ].第 二个参数不管网页中的额外的宽度和高度在什么位置,只要它们存在就行.只需要把网页中的所有额外的高度和宽度加 起来就行. options Object x Integer y Integer width Integer height Integer0 码力 | 203 页 | 2.72 MB | 1 年前3
 Hello 算法 1.1.0 Dart版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 18.45 MB | 1 年前3 Hello 算法 1.1.0 Dart版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 18.45 MB | 1 年前3
 Hello 算法 1.1.0 JavaScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 379 页 | 18.46 MB | 1 年前3 Hello 算法 1.1.0 JavaScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 379 页 | 18.46 MB | 1 年前3
 Hello 算法 1.1.0 TypeScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 383 页 | 18.49 MB | 1 年前3 Hello 算法 1.1.0 TypeScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 383 页 | 18.49 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Dart 版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 18.46 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Dart 版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 18.46 MB | 10 月前3
 Hello 算法 1.2.0 简体中文 JavaScript 版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 379 页 | 18.47 MB | 10 月前3 Hello 算法 1.2.0 简体中文 JavaScript 版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 379 页 | 18.47 MB | 10 月前3
 Hello 算法 1.0.0b5 JavaScript版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 第 15 章 贪心 hello‑algo.com 356 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的索引之差。设容量为 定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 1. 贪心策略确定 这道题还有更高效率的解法。如图 15‑8 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 375 页 | 30.68 MB | 1 年前3 Hello 算法 1.0.0b5 JavaScript版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 第 15 章 贪心 hello‑algo.com 356 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的索引之差。设容量为 定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 1. 贪心策略确定 这道题还有更高效率的解法。如图 15‑8 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 375 页 | 30.68 MB | 1 年前3
 Hello 算法 1.0.0 JavaScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 376 页 | 17.57 MB | 1 年前3 Hello 算法 1.0.0 JavaScript版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 376 页 | 17.57 MB | 1 年前3
 Hello 算法 1.0.0b5 TypeScript 版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 第 15 章 贪心 hello‑algo.com 359 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的索引之差。设容量为 定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 1. 贪心策略确定 这道题还有更高效率的解法。如图 15‑8 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 30.70 MB | 1 年前3 Hello 算法 1.0.0b5 TypeScript 版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 第 15 章 贪心 hello‑algo.com 359 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的索引之差。设容量为 定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 1. 贪心策略确定 这道题还有更高效率的解法。如图 15‑8 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 30.70 MB | 1 年前3
共 16 条
- 1
- 2













