给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
第一种方法:挪,双指针形式,一个i用来遍历数组,然后记下非0元素,一个j用来作为数组顺序下标,只是把i指向的非0元素,往数组的顺位放
时间复杂度O(n)
public void Move(int[] nums)
{
if(nums==null)
return;
int j = 0;
int length = nums.Length;
for (int i = 0; i < length; i++)
{
if (nums[i] != 0)
{
nums[j++] = nums[i];
}
}
for (int i = j; i < nums.Length; i++)
{
nums[i] = 0;
}
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine(nums[i]);
}
}