#3800. 练3-清理魔法石阵
练3-清理魔法石阵
在宁静清晨的兔猫信奥学院里,魔法算法教室迎来了一道看似简单却充满挑战的题目。
🐾 加菲老师手里拿着一张魔法石阵的记录卷轴,上面记着一串神秘数字。他望着小兔和小猫,说:
“孩子们,这是一条通往高阶魔法塔的石阵路径,但被一些**失效的魔力碎片(值为 )**打乱了顺序。
你们的任务是——将所有 移动到数组的末尾,而非零元素的相对顺序必须保持不变!
注意,整场施法过程必须在原地完成,不能使用新的数组;你们还要尽可能地减少操作次数。
最后,请告诉我你们保留下来的非零石的数量 ,以及最终整理后的石阵顺序。”
🐇 小兔问:“那我们只能一边遍历一边移动吗?”
🐱 小猫点点头:“没错,不能多花空间,操作还得少,确实有点意思!”
输入格式
- 第一行一个整数 ,表示魔法石阵的长度。
- 第二行 个整数,表示魔法石阵当前的元素 ,可能为有效的能量(非零)或失效碎片()。
输出格式
- 第一行输出一个整数 ,表示最终保留下来的非零石数量。
- 第二行输出调整后的完整石阵,前 个为原本顺序的非零数字,剩下的位置全部补上 。
输入样例 1
5
0 1 0 3 12
输出样例 1
3
1 3 12 0 0
输入样例 2
1
0
输出样例 2
0
0
数据范围与进阶要求
- 对于 的数据,满足:
- 进阶目标:尽量减少对数组的写操作次数。
故事的最后,小兔和小猫默契地使用双指针策略,一边遍历一边清理石阵,很快就完成了加菲老师布置的任务。魔法塔的大门缓缓开启,他们又向高级算法魔法更进一步。
现在,轮到你来操控石阵啦,少年魔法师,你能比他们更快更巧吗?🌟🐇🐱