#3799. 练2-魔法数据清洗2

练2-魔法数据清洗2

清晨,阳光洒进了兔猫信奥学院的编程教室,今天是**“魔法数据清洗”实训课**。🐇小兔和🐱小猫坐在教室里,望着黑板上加菲老师写下的一行数字陷入了思考。

📜 加菲老师慢悠悠地说:

“孩子们,这是一串用来召唤魔法的编号列表,但它们最近被重复施法的波动扰乱了

你们的任务是:保留每个数字最多出现两次,多余的都要清除掉——否则会触发魔法混乱!

不许新建列表!你们要在原来的列表上完成这个魔法清理,额外的魔力空间只能是常数级别哟!”


🐇小兔翻了翻列表,发现这些数字已经是按非降序排列的,思索道:“只要我从头扫过去,控制每个数字最多保留两次,不就可以了吗?”

🐱小猫点头道:“是的,像数星星一样标记前两颗,后面的直接无视掉!”

加菲老师满意地笑了笑:“那就开始吧,把你们清理后的魔法列表告诉我吧~”


输入格式

  • 第一行一个整数 $$n$$,表示数组的长度。
  • 第二行包含 $$n$$ 个按非降序排列的整数,表示原始魔法编号列表 nums[i]nums[i]

输出格式

  • 第一行输出一个整数 $$k$$,表示清理后列表的有效长度。
  • 第二行输出清理后的数组前 $$k$$ 个元素,元素之间以空格分隔。

输入样例 1

6
1 1 1 2 2 3

输出样例 1

5
1 1 2 2 3

输入样例 2

9
0 0 1 1 1 1 2 3 3

输出样例 2

7
0 0 1 1 2 3 3

数据范围

  • 对于所有数据,满足:
    • 1n3×1041 \leq n \leq 3 \times 10^4
    • 104nums[i]104-10^4 \leq \text{nums}[i] \leq 10^4

最终,小兔和小猫默契地配合完成了清理任务。
只留下最精炼的魔法编号——每个只出现一次或两次,整洁又安全。

加菲老师为他们准备了香喷喷的鱼干和胡萝卜蛋糕:“干得漂亮,未来的编程大师!”

现在,这个任务也交给你啦——
看看你能否也像他们一样,写出精巧的算法魔法呢?🐇🐱✨