学习目标
前置知识与环境
先阅读第 12 章对应内容,并确保本机可使用 C++17。首次运行可执行 make doctor;Windows 未安装 Make 时可在仓库根使用 pnpm 命令。
题目
递归选择较小头节点并连接剩余链表。
输入格式
第一行 n m,第二、三行分别给出两条非降序链表。
输出格式
输出合并后的非降序序列;结果为空时输出空行。
数据范围
0 ≤ n,m 且 n+m ≤ 5000。
示例
输入
text
3 3
1 2 4
1 3 4输出
text
1 1 2 3 4 4测试设计提示
公开测试至少 10 组、总分 100 分,覆盖样例、边界、典型错误与适度压力输入。测试只接受标准输出;调试信息请写到标准错误。
运行与评分
powershell
cd labs/chapter-12/exercise/E-12-10-merge-two-sorted-lists
make run
make score
# 没有 Make 时,在仓库根执行
pnpm lab:run -- labs/chapter-12/exercise/E-12-10-merge-two-sorted-lists
pnpm lab:score -- labs/chapter-12/exercise/E-12-10-merge-two-sorted-lists完成清单
思考与复盘
- 递归函数对输入区间或问题规模承诺了什么?
- 哪个最小反例最容易暴露边界错误?
- 能否改写为迭代算法?两种写法的空间复杂度有何区别?