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

Kimi k2.6 LeetCode 3003. 执行操作后的最大分割数量 Go实现

以下是 LeetCode 3003. 执行操作后的最大分割数量 的 Go 实现,采用状态压缩 + 记忆化搜索思路。

Go 代码

```go
package main

func maxPartitionsAfterOperations(s string, k int) int {
n := len(s)
// 记忆化:key = (i << 27) | (cur << 1) | t
// i 最大 1e5,cur 最大 2^26,需要更灵活的 key
type state struct {
i int
cur int
t int
}
f := map[state]int{}

var dfs func(i, cur, t int) int
dfs = func(i, cur, t int) int {
if i >= n {
return 1
}

key := state{i, cur, t}
if v, ok := f[key]; ok {
return v
}

v := 1 << (s[i] - 'a')
nxt := cur | v
ans := 0

// 不修改当前字符
if bitCount(nxt) > k {
// 超过 k 个不同字符,开启新分割块
ans = dfs(i+1, v, t) + 1
} else {
ans = dfs(i+1, nxt, t)
}

// 尝试修改当前字符
if t > 0 {
for j := 0; j < 26; j++ {
nxt = cur | (1 << j)
if bitCount(nxt) > k {
ans = max(ans, dfs(i+1, 1<<j, 0)+1)
} else {
ans = max(ans, dfs(i+1, nxt, 0))
}
}
}

f[key] = ans
return ans
}

return dfs(0, 0, 1)
}

func bitCount(x int) int {
cnt := 0
for x > 0 {
cnt++
x &= x - 1
}
return cnt
}

func max(a, b int) int {
if a > b {
return a
}
return b
}
```

关键点说明

要点 说明
位掩码 `cur` 用 int 的 26 个二进制位表示 a-z 字符是否在当前分割块中出现
`bitCount` 计算掩码中 1 的个数,Go 标准库没有内置,手动实现
记忆化 key 用 struct `(i, cur, t)` 作为 map 的 key,Go 的 map 支持 struct key
不修改分支 当前字符加入后若超过 `k` 个不同字符,必须开启新分割块
修改分支 枚举 26 种可能的修改字符,取最优结果

复杂度分析

- 时间复杂度:O(n \times 26 \times 26),实际有效状态数远小于理论值
- 空间复杂度:O(n \times 26 \times 26),用于记忆化 map

注意

Go 中没有 `Integer.bitCount()`,需要手动实现。上述实现使用 `x &= x - 1` 的经典位运算技巧来统计 1 的个数,效率较高。

http://www.gsyq.cn/news/1463502.html

相关文章:

  • 告别重复造轮子:用快马一键生成gptimage2安卓版高效开发模板
  • AI注销不是删除,而是智能遗忘:解析联邦学习+差分隐私双引擎注销架构(附开源POC代码)
  • Kimi k2.6 LeetCode 2972. 统计移除递增子数组的数目 II Python3实现
  • SWAT模型实战踩坑记:.sol文件为空、气象数据缺失?手把手教你诊断与修复
  • 新手福音:用快马平台生成练习项目,轻松理解github协作开发
  • 如何快速构建你的专属离线英语发音库:11万单词MP3音频一键下载指南
  • ContextMenuForWindows11开源项目:彻底解放你的右键菜单生产力
  • 别再乱改my.cnf了!MySQL 8.0+Docker大小写敏感问题的根治方案
  • 2026年近期潍坊行业知名的智能热水龙头生产商怎么选择?专业解析与推荐 - 2026年企业资讯
  • iFakeLocation终极指南:三步完成iOS虚拟定位的完整方案
  • 昌平区如何选购靠谱的近视防控眼镜? - mypinpai
  • 2026微信小程序商城平台深度解析:全链路选型与技术能力实测
  • 告别烂三角!用CGAL的isotropic_remeshing函数一键优化你的3D网格模型
  • hw八股准备
  • 如何用AI视觉技术彻底革新你的象棋学习体验:Vin象棋完整指南
  • 2026年新发布:青岛船员刷题软件机构如何选?这份指南请收好 - 2026年企业资讯
  • 2026年6月有实力的北京丙烷配送公司怎么选推荐榜,工业丙烷/高纯丙烷/焊割丙烷配送公司选择指南 - 海棠依旧大
  • 实战指南:基于快马平台生成RESTful API自动化测试脚本,保障接口质量
  • 2026无锡管道疏通避坑指南:选对专业、靠谱、口碑好公司的硬核逻辑!对维度对比。 - 极速版本
  • 从爱因斯坦求和到深度学习:揭秘张量运算中的‘黑话’(δij与erst符号保姆级解读)
  • OBS LocalVocal终极指南:3步实现本地AI语音识别字幕
  • Bobst 0704151202 NFC25-24T05-15控制器模块
  • 粉底液代加工多少钱,有哪些推荐厂商 - mypinpai
  • 中小企业转型:低成本、零服务器架构接入大模型的商业路径评估
  • 2026年6月评价高的无锡居民搬家公司哪家*榜:五大专业公司选择指南 - 海棠依旧大
  • AiFei 框架在机器人开发领域和边缘计算中的机遇
  • 探讨钢筋混凝土管定制生产的技巧 - mypinpai
  • 2026年现阶段,广东不锈钢圆球销售厂家综合实力深度解析 - 2026年企业资讯
  • 增长黑客实战:数据埋点设计、用户留存模型与转化率分析实践
  • 从Arduino到ATTINY13A:打造低功耗可穿戴彩虹灯徽章全解析