Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การย้ายศูนย์ทั้งหมดไปท้ายอาร์เรย์ใน C#


สร้างเมธอด 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