当前位置: 首页 > 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.gsyq.cn/news/1531881.html

相关文章:

  • 2026年佛山专利申请与无效律师选对=省心 钟泽江律师推荐(佛山企业收藏版) - 本地品牌推荐
  • 2026年6月靠谱的上海毛坯房暗管查漏公司怎么选择推荐 专业暗管定位与防水补漏机构选择指南 - 海棠依旧大
  • 开源浏览器资源嗅探技术深度解析:猫抓扩展的架构设计与应用实践
  • 【电力系统】含氢气氨气综合能源系统优化调度研究附Matlab代码
  • 2026年更新:泗洪无人机培训推荐指南与深度剖析 - 品牌鉴赏官2026
  • 3分钟快速上手:免费网页版PPTist在线演示文稿制作完全指南
  • 2026年南宁配眼镜服务哪家更专业?实测8家眼镜店验光、镜片与售后服务体验 - 优质品牌商家
  • 九章编程法,抄同行的作业,加自己的功能,抄作业神器
  • 第35章:自定义 LLM、Embedding 与向量存储适配器
  • 江苏省各市中国专利奖奖补政策是怎样的?
  • 2026年6月口碑好的衡水装修公司找哪家推荐,全屋整装/毛坯装修/旧房翻新公司选择指南 - 海棠依旧大
  • 工具调用MCP_Server 开发梳理
  • Base64 编码完全指南:原理、规则、计算与应用
  • DDR内存控制器初始化实战:从寄存器配置到信号完整性调试
  • HEIF图片转换终极解决方案:告别iPhone照片在Windows上的尴尬时刻
  • 2026年家用按摩椅选购指南:优质专卖店与高性价比品牌深度解析 - 优质品牌商家
  • 2026年 一件代发平台推荐榜单:常州源头货源/电商衣服一件代发/无货源仓库服务,深度解析与高性价比之选 - 企业推荐官【官方】
  • 遗传算法实操指南:选择、交叉、变异的工程调优
  • Java毕业设计-基于 SpringBoot 的古钱币文化交流与藏品管理系统 智能化钱币收藏交流分享系统的设计与开发(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 2026实力之选:热镀锌钢格栅/踏步板/沟盖板/钢格板/水沟盖板/钢结构平台板专业厂家最新实力解析 - 企业推荐官【官方】
  • rocky配置网卡手动修改配置文件与nmcli命令添加网卡配置
  • 2026年6月靠谱的积家手表回收厂家怎么选推荐,复杂功能腕表/纪念款/经典正装表回收厂家选择指南 - 海棠依旧大
  • 2026上海AI搜索GEO优化服务商技术路径深度解析
  • 少走弯路:2026年首选推荐的专业AI论文写作软件
  • 2026年廊坊靠谱黄金回收门店推荐——首选典典佳汇,诚信高价、口碑第一! - 诚鑫名品
  • 嵌入式硬件控制实战:从MSC8251寄存器视角解析GPIO与I2C驱动开发
  • Kimi K2.6 思考 LeetCode 3260. 找出最大的 N 位 K 回文数 Java实现
  • Java毕业设计-基于 SpringBoot 的线上家教服务系统设计与实现 面向校园的家教资源匹配管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • Moonlight-Switch终极指南:让任天堂Switch免费畅玩PC游戏大作
  • 反向海淘订单状态机设计:taocarts 状态流转与并发控制