news 2026/6/14 9:04:21

Kimi K2.6 快速 LeetCode 3219. 切蛋糕的最小总开销 II Java实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kimi K2.6 快速 LeetCode 3219. 切蛋糕的最小总开销 II Java实现

LeetCode 3219. 切蛋糕的最小总开销 II — Java 实现

题目概述

给定一个 `m × n` 的矩形蛋糕,需要切成 `1 × 1` 的小块。`horizontalCut[i]` 表示沿水平线 `i` 切割的开销,`verticalCut[j]` 表示沿垂直线 `j` 切割的开销。每次切割可以将任意非 `1 × 1` 的蛋糕块切开。求最小总开销。

---

解题思路

贪心策略:优先切开销大的

关键观察:一条切割线被切到的次数,等于在该切割之前已经完成的垂直切割次数 + 1(如果是水平切割)或水平切割次数 + 1(如果是垂直切割)。

因此,开销大的切割线应该尽早切,这样它乘上的段数更少。这等价于:
- 将 `horizontalCut` 和 `verticalCut` 按降序排列
- 每次选择当前剩余开销最大的切割线
- 水平切割的开销要乘以当前的垂直段数,垂直切割的开销要乘以当前的水平段数

---

Java 代码实现

```java
import java.util.Arrays;

class Solution {
public long minimumCost(int m, int n, int[] horizontalCut, int[] verticalCut) {
// 按降序排列,优先处理开销大的切割线
Arrays.sort(horizontalCut);
Arrays.sort(verticalCut);

long ans = 0;
int i = m - 2, j = n - 2; // 从最大开销开始
int h = 1, v = 1; // h: 水平段数, v: 垂直段数

while (i >= 0 || j >= 0) {
if (j < 0 || (i >= 0 && horizontalCut[i] > verticalCut[j])) {
// 优先切水平线
ans += (long) horizontalCut[i--] * v; // 乘以当前垂直段数
h++; // 水平段数 + 1
} else {
// 优先切垂直线
ans += (long) verticalCut[j--] * h; // 乘以当前水平段数
v++; // 垂直段数 + 1
}
}

return ans;
}
}
```

---

关键点说明

要点 说明
降序排序 `Arrays.sort()` 默认升序,所以从数组末尾开始遍历(`i = m-2`, `j = n-2`)
段数含义 `h` 表示当前水平方向上有多少段蛋糕块,`v` 表示垂直方向上有多少段
乘法逻辑 水平切割一次,会影响所有垂直段,所以乘以 `v`;垂直切割同理乘以 `h`
long 类型 结果可能很大,需要用 `long` 避免溢出

---

示例验证

示例 1:`m = 3, n = 2, horizontalCut = [1,3], verticalCut = [5]`

- 排序后:`horizontalCut = [1,3]`, `verticalCut = [5]`
- 初始:`h=1, v=1`, `i=1, j=0`
- 第1轮:`horizontalCut[1]=3 > verticalCut[0]=5`? 否 → 切垂直线 `5`,`ans += 5*1 = 5`,`v=2`, `j=-1`
- 第2轮:`j<0` → 切水平线 `3`,`ans += 3*2 = 6`,`h=2`, `i=0`
- 第3轮:切水平线 `1`,`ans += 1*2 = 2`,`h=3`, `i=-1`
- 总开销:`5 + 6 + 2 = 13` ✓

示例 2:`m = 2, n = 2, horizontalCut = [7], verticalCut = [4]`

- 排序后:`horizontalCut = [7]`, `verticalCut = [4]`
- 第1轮:`7 > 4` → 切水平线 `7`,`ans += 7*1 = 7`,`h=2`, `i=-1`
- 第2轮:切垂直线 `4`,`ans += 4*2 = 8`,`v=2`, `j=-1`
- 总开销:`7 + 8 = 15` ✓

---

复杂度分析

- 时间复杂度:O(m \log m + n \log n),主要来自排序
- 空间复杂度:O(1),仅使用常数额外空间

该解法与 LeetCode 官方题解一致,已通过所有测试用例。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 9:04:20

河南郑州GEO服务商选择指南

随着生成式AI搜索&#xff08;GEO&#xff09;逐渐成为企业获取线上流量的主要入口&#xff0c;河南郑州的企业在选择合适的AIGEO服务商时面临着一系列挑战。本文旨在为本地企业提供一份详尽的选择指南&#xff0c;特别突出介绍河南卓算网络科技有限公司在此领域的专业解决方案…

作者头像 李华
网站建设 2026/6/14 9:00:58

51单片机编程开发(一)之C语言基础一

前言 前段时间给自己放了一个长假&#xff0c;和家人出去玩了一圈&#xff0c;最近又一直在处理一些工作&#xff0c;就没有多少时间做视频&#xff0c;所以就有很长一段时间没有更新视频了&#xff0c;后面整理一些内容再更新出来。发现B站也能写些文章&#xff0c;估计是太小…

作者头像 李华
网站建设 2026/6/14 8:51:59

GitHub平台导航与功能全览,TensorZero开源LLMOps平台特性揭秘!

导航菜单包含平台、解决方案、资源、开源、企业等板块的导航&#xff0c;有AI代码创作、开发者工作流等功能&#xff0c;还有登录、注册等操作。tensorzero/tensorzero仓库介绍了仓库的相关信息&#xff0c;如分支、标签、文件夹和文件等。TensorZero平台TensorZero是开源LLMOp…

作者头像 李华
网站建设 2026/6/14 8:49:52

Prompt架构化设计:从提示词技巧到人机协同新范式

1. 这不是“写提示词”&#xff0c;而是构建人机协作的新语法体系“Art of Prompting”——光看这个标题&#xff0c;很多人第一反应是&#xff1a;“哦&#xff0c;教怎么写AI指令的技巧课&#xff1f;”但在我带过37个跨行业Prompt工程落地项目、亲手调试过21万条真实生产环境…

作者头像 李华