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

จะย้ายศูนย์ทั้งหมดไปยังจุดสิ้นสุดของอาร์เรย์จากอาร์เรย์ของตัวเลขจำนวนเต็มที่กำหนดโดยใช้ C # ได้อย่างไร


สร้างเมธอด MoveZeros สำรวจผ่านอาร์เรย์และนับจำนวนศูนย์ในอาร์เรย์ ขึ้นอยู่กับขนาดการนับทำให้เซลล์สุดท้ายทั้งหมดเป็นศูนย์ ส่งคืนโดยไม่ประมวลผลหากความยาวของอาร์เรย์เป็นโมฆะหรือว่างเปล่า ผลลัพธ์สุดท้ายจะเป็น nums Array ความซับซ้อนของเวลาคือ O(N) เนื่องจากเราข้ามผ่านอาร์เรย์เพียงครั้งเดียว

ความซับซ้อนของเวลา − O(N)

ความซับซ้อนของอวกาศ − 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.Count(); 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 };
   s.MoveZeros(nums);
   foreach (var item in nums){
      Console.WriteLine(item);
   }
}

ผลลัพธ์

[1,3,12,0,0]