#P20009. 徐阳理石 · 零归其位

徐阳理石 · 零归其位

徐阳理石 · 零归其位

题目背景

徐阳入主云剑宗后,打开宗门宝库,只见满地灵石散落,杂乱无章。

这些灵石分为两类:有灵气的灵石(正整数)和废石(以 0 表示)。宗门规矩森严——所有废石必须挪到宝库最深处,而有灵气的灵石则需保持原有的相对顺序,不得打乱。

"整理灵石而已,"徐阳袖袍一挥,"去芜存菁,废石归末。"

但他定下一条规矩:不可借助外力(不得创建新数组),只能原地挪移。 毕竟,宝库空间有限,搬运灵石只能就地调换位置。

题目描述

给定 T 组数据,每组包含一个整数 N 和一个长度为 N 的整数数组 nums

请将数组中所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序不变。

要求:必须原地操作(in-place),不能拷贝数组。

输入格式

第一行一个整数 T,表示数据组数。

接下来对于每组数据:

  • 第一行一个整数 N,表示数组长度。
  • 第二行 N 个整数,以空格分隔,表示数组 nums。

输出格式

对于每组数据,输出一行,N 个整数,以空格分隔——即将所有 0 移到末尾后的数组。

样例

2
5
0 1 0 3 12
4
1 2 3 0
1 3 12 0 0
1 2 3 0

数据范围

  • 1 ≤ T ≤ 4
  • 1 ≤ N ≤ 10^5
  • -10^9 ≤ nums[i] ≤ 10^9
  • 单组测试数据内所有 N 的总和不超过 10^5
  • 保证输出结果唯一确定