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

Kimi K2.6 思考 LeetCode 3260. 找出最大的 N 位 K 回文数 Go实现

以下是 LeetCode 3260 找出最大的 N 位 K 回文数 的 Go 实现,基于 k 的分类讨论规律解法,时间复杂度 O(n),空间复杂度 O(n)(返回结果字符串)。

```go
package main

import "strings"

func largestPalindrome(n int, k int) string {
switch k {
case 1, 3, 9:
// 全9即可被 1/3/9 整除
return strings.Repeat("9", n)

case 2:
// 末位需为偶数,取最大偶数8;首位也需为8(回文)
if n <= 2 {
return strings.Repeat("8", n)
}
return "8" + strings.Repeat("9", n-2) + "8"

case 4:
// 末两位需被4整除,88是最大满足条件的两位
if n <= 4 {
return strings.Repeat("8", n)
}
return "88" + strings.Repeat("9", n-4) + "88"

case 5:
// 末位需为0或5,取5(不能前导零)
if n <= 2 {
return strings.Repeat("5", n)
}
return "5" + strings.Repeat("9", n-2) + "5"

case 6:
// 需同时满足被2和被3整除
if n <= 2 {
return strings.Repeat("6", n)
}
if n%2 == 1 {
// 奇数位: 8...8...8,中间8保证数字和为3的倍数
l := n/2 - 1
return "8" + strings.Repeat("9", l) + "8" + strings.Repeat("9", l) + "8"
}
// 偶数位: 中间两位取77,使数字和为3的倍数
l := n/2 - 2
return "8" + strings.Repeat("9", l) + "77" + strings.Repeat("9", l) + "8"

case 7:
// k=7 的规律较复杂,按 n%12 分类讨论
if n <= 2 {
return strings.Repeat("7", n)
}
mod := n % 12
switch mod {
case 0, 6:
return strings.Repeat("9", n)
case 3:
res := make([]byte, n)
for i := range res {
res[i] = '9'
}
res[n/2] = '5'
return string(res)
case 9:
res := make([]byte, n)
for i := range res {
res[i] = '9'
}
res[n/2] = '6'
return string(res)
case 1, 2, 4, 5:
res := make([]byte, n)
for i := range res {
res[i] = '7'
}
for i, j := 0, n-1; i+1 < j; i, j = i+1, j-1 {
res[i] = '9'
res[j] = '9'
}
return string(res)
case 7, 8, 10, 11:
res := make([]byte, n)
for i := range res {
res[i] = '4'
}
for i, j := 0, n-1; i+1 < j; i, j = i+1, j-1 {
res[i] = '9'
res[j] = '9'
}
return string(res)
}

case 8:
// 末三位需被8整除,888是最大满足条件的三位
if n <= 6 {
return strings.Repeat("8", n)
}
return "888" + strings.Repeat("9", n-6) + "888"
}

return ""
}
```

核心思路说明

由于 `k ≤ 9`,可以对每个 k 值利用整除规则和回文约束分别找规律:

k 关键规则 构造方式
1, 3, 9 数字和是3/9的倍数 全 `9`
2 末位偶数 首尾 `8`,中间全 `9`
4 末两位被4整除 前两位和末两位 `88`,中间全 `9`
5 末位0或5 首尾 `5`,中间全 `9`
6 被2且被3整除 奇数:`8...8...8`;偶数:中间 `77`
7 无简单规则 按 `n % 12` 分类,共6种子情况
8 末三位被8整除 前三位和末三位 `888`,中间全 `9`

复杂度分析

- 时间复杂度: O(n) — 主要是 `strings.Repeat` 和 `make([]byte, n)` 的字符串构造
- 空间复杂度: O(n) — 返回结果字符串所需空间

这种方法比通用的 DP 解法(O(nk) 时间)更简洁高效,充分利用了 `k ≤ 9` 的题目约束。

http://www.jsqmd.com/news/1019945/

相关文章:

  • 寄大件用什么物流便宜?大件快递怎么寄最省钱?教你几招避坑技巧 - 快递物流资讯
  • 2026年工业锅炉市场观察:西南地区主流汽锅炉厂家综合能力评估 - 优质品牌商家
  • 如何快速实现网盘下载加速:免费高效的终极解决方案
  • Matlab图像处理避坑:灰度变换时im2double、uint8这些数据类型转换到底怎么用?
  • Gemini 3.5 Flash vs GPT-4o mini:谁才是最强性价比大模型?
  • 深入解析MSC8251单核DSP SoC架构:从核心、内存到高速数据通路
  • 2026测评视角拆解:香港公屋“奇葩”不规则户型,全屋定制怎么做才不翻车?
  • 如何用VirtualRouter将Windows电脑变成免费WiFi热点?
  • 2026乐山苏稽跷脚牛肉探店指南:哪家值得一试?老字号与新锐品牌真实体验分享 - 优质品牌商家
  • Axios 0.21 vs 1.2:一个Content-Type配置引发的‘血案’,手把手教你如何正确设置请求头
  • 2026年更新:探寻佛山实木家具维修源头厂家的专业之选 - 品牌鉴赏官2026
  • MPC866 MMU内存管理:TLB、页表与保护模式详解
  • 3步解锁显卡潜能:DLSS Swapper智能性能引擎完全实战手册
  • 华为eNSP模拟器里,这10条BGP命令我天天用(附常用场景解析)
  • 5分钟掌握Blender UV Squares:告别UV编辑的混乱与低效
  • PXD10 DMA寄存器配置与仲裁机制深度解析及实战优化
  • 2026年 防水排水板/膨润土防水毯/三维复合排水网/透水管/软式透水管/硬式透水管厂家专业实力解析 - 企业推荐官【官方】
  • MSC8251 DMA编程实战:中断管理与状态监控核心配置详解
  • ESXi网络配置踩坑实录:给Ubuntu虚拟机加第二张网卡后,为什么上不了网了?
  • 解决OpenWrt Dnsmasq常见问题:DHCP响应慢、日志刷屏与AdGuard Home兼容
  • 2026年翻板坝源头厂家深度观察:技术迭代与项目落地双轮驱动行业升级 - 优质品牌商家
  • OBS Spout2插件终极指南:突破分辨率限制的专业视频共享方案
  • 2026年新消息:德州展厅广告物料实体门店可靠选择与联系解析 - 品牌鉴赏官2026
  • 2026拒当“大冤种”!深港跨城全屋定制真有全流程包办?第三方深度测评拆解
  • 终极修复指南:彻底解决Windows程序启动依赖问题
  • Label Studio:企业级多模态数据标注平台的架构革命与实施路径
  • PXD10微控制器引脚复用实战:从原理到配置避坑指南
  • 告别节点迷宫:RGThree-Comfy如何让ComfyUI工作流变得简单高效
  • CZSC缠论插件终极指南:3分钟让通达信变身智能缠论分析系统
  • 避坑指南:Halcon Socket通讯调试时你八成会遇到的3个问题(附解决方案)