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

Kimi K2.6快速 LeetCode 3260. 找出最大的 N 位 K 回文数 Rust实现

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

```rust
impl Solution {
pub fn largest_palindrome(n: i32, k: i32) -> String {
let n = n as usize;
match k {
// k = 1, 3, 9: 全9即可被整除
1 | 3 | 9 => "9".repeat(n),

// k = 2: 末位需为偶数,取最大偶数8
2 => {
if n <= 2 {
"8".repeat(n)
} else {
format!("8{}8", "9".repeat(n - 2))
}
}

// k = 4: 末两位需被4整除,88是最大满足条件的两位
4 => {
if n <= 4 {
"8".repeat(n)
} else {
format!("88{}88", "9".repeat(n - 4))
}
}

// k = 5: 末位需为0或5,取5
5 => {
if n <= 2 {
"5".repeat(n)
} else {
format!("5{}5", "9".repeat(n - 2))
}
}

// k = 6: 需同时满足被2和被3整除
6 => {
if n <= 2 {
"6".repeat(n)
} else if n % 2 == 1 {
// 奇数位: 8...8...8,中间8保证数字和为3的倍数
let l = n / 2 - 1;
format!("8{}8{}8", "9".repeat(l), "9".repeat(l))
} else {
// 偶数位: 中间两位取77
let l = n / 2 - 2;
format!("8{}77{}8", "9".repeat(l), "9".repeat(l))
}
}

// k = 7: 规律最复杂,按 n % 12 查表
7 => {
if n <= 2 {
"7".repeat(n)
} else {
let middle = vec![
"", "7", "77", "959", "9779", "99799",
"999999", "9994999", "99944999", "999969999",
"9999449999", "99999499999",
];
let q = n / 12;
let r = n % 12;
format!(
"{}{}{}",
"999999".repeat(q),
middle[r],
"999999".repeat(q)
)
}
}

// k = 8: 末三位需被8整除,888是最大满足条件的三位
8 => {
if n <= 6 {
"8".repeat(n)
} else {
format!("888{}888", "9".repeat(n - 6))
}
}

_ => String::new(),
}
}
}
```

核心思路说明

由于 `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` 查中间表,两侧填充 `999999`
8 末三位被8整除 前三位和末三位 `888`,中间全 `9`

k = 7 的特殊处理

k=7 的规律最为复杂,通过数学推导发现结果以 12 为周期循环。因此预存了 12 种中间模式(`middle` 数组),两侧用 `999999` 填充:

- `n = 3` → `959`(中间模式索引 3)
- `n = 5` → `99799`(中间模式索引 5)
- `n = 6` → `999999`(中间模式索引 6)
- `n = 12` → `999999999999`(两侧各一个 `999999`,中间为空)
- `n = 15` → `999999959999999`(两侧各一个 `999999`,中间 `959`)

复杂度分析

- 时间复杂度: O(n) — `String::repeat` 和 `format!` 的字符串构造
- 空间复杂度: O(n) — 返回结果字符串所需空间

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

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

相关文章:

  • MPC860 TRST信号配置详解:JTAG调试与低功耗模式的设计关键
  • 2026年佛山专利申请与无效律师选对=省心 钟泽江律师推荐(佛山企业收藏版) - 本地品牌推荐
  • 2026年6月靠谱的上海毛坯房暗管查漏公司怎么选择推荐 专业暗管定位与防水补漏机构选择指南 - 海棠依旧大
  • MPC866 SCC控制器:缓冲区描述符机制与UART/HDLC模式实战解析
  • 欧空局网址变更后,SARscape 5.6.2 精密轨道文件(Precise Orbit Files)下载与配置全攻略
  • DeepSeek LeetCode 3261. 统计满足 K 约束的子字符串数量 II Java实现
  • 开源浏览器资源嗅探技术深度解析:猫抓扩展的架构设计与应用实践
  • 2026年 马鞍山颗粒板厂家推荐榜单:ENF实木颗粒板/防潮双饰面颗粒板,全屋定制优选品牌深度解析 - 品牌发掘
  • 2026年中山专利申请与无效律师推荐指南:从灯饰到五金全覆盖(中山企业收藏版) - 本地品牌推荐
  • Windows上安装APK的终极解决方案:告别模拟器,3分钟搞定安卓应用
  • 内证观察笔记
  • HsMod:炉石传说55项功能全能插件,彻底改变你的游戏体验 [特殊字符]
  • // SPDX-License-Identifier: GPL-2.0 九章编程矩阵化 bio 子系统 · 物理极限版 (~450 行) 屎山代码老系统,有人用,没人管
  • RAG大揭秘:8种架构解锁AI知识库新玩法,轻松提升大模型能力!
  • 太仓市高新技术企业认定的所需材料及申报流程
  • 【Java基础】堆与优先级的艺术:从急诊分诊到Top-K,手写一个PriorityQueue
  • 【电力系统】含氢气氨气综合能源系统优化调度研究附Matlab代码
  • 免费M3U8视频下载器终极指南:告别复杂命令行,一键下载在线视频
  • Anthropic会话抽象层(SAL)静默归零:客户端状态管理新范式
  • 华岐|正大|友发|振鸿|镀锌方管批发|四川盛世钢联国际贸易有限公司 - 四川盛世钢联营销中心
  • 3分钟快速上手:免费网页版PPTist在线演示文稿制作完全指南
  • 基于ZigBee RF4CE的无线HID设备开发:Freescale ZID应用配置详解
  • 2026年南宁配眼镜服务哪家更专业?实测8家眼镜店验光、镜片与售后服务体验 - 优质品牌商家
  • 深入解析NXP PXD10微控制器:显示控制、内存架构与系统设计实践
  • 2026年更新:泗洪无人机培训推荐指南与深度剖析 - 品牌鉴赏官2026
  • 九章编程法,抄同行的作业,加自己的功能,抄作业神器
  • 2026年 风机消音器/蒸汽消音器/排汽消音器/锅炉消音器厂家推荐:小孔与管道消音技术硬核解析 - 品牌发掘
  • 第35章:自定义 LLM、Embedding 与向量存储适配器
  • 用OpenAI API密钥构建可验证的深度研究工作流
  • 江苏省各市中国专利奖奖补政策是怎样的?