สร้างเมธอด MoveZeros วนลูปผ่านอาร์เรย์นับจำนวนศูนย์ ตามจำนวนที่นับได้ ตั้งค่าตำแหน่งท้ายให้เป็นศูนย์ คืนค่าโดยไม่ประมวลผลหากอาร์เรย์เป็น null หรือว่าง ผลลัพธ์สุดท้ายจะอยู่ในอาร์เรย์ nums Time Complexity O(N) เพราะวนลูปเพียงครั้งเดียว
Time Complexity: O(N)
Space Complexity: O(1)
ตัวอย่างโค้ด
public class Arrays
{
public void MoveZeros(int[] nums)
{
if (nums == null || nums.Length == 0)
{
return;
}
int count = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] != 0)
{
nums[count] = nums[i];
count++;
}
}
for (int i = count; i < nums.Length; i++)
{
nums[i] = 0;
}
}
}
static void Main(string[] args)
{
int[] nums = { 0, 1, 0, 3, 12 };
Arrays s = new Arrays();
s.MoveZeros(nums);
foreach (var item in nums)
{
Console.WriteLine(item);
}
}ผลลัพธ์
1 3 12 0 0