Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để di chuyển tất cả các số không đến cuối mảng từ mảng các số nguyên đã cho bằng cách sử dụng C #?


Tạo một phương thức MoveZeros, duyệt qua mảng và đếm số lượng Zeros trong mảng. Dựa trên kích thước đếm làm cho tất cả các ô cuối cùng bằng không. Trả về mà không cần xử lý nếu độ dài mảng là null hoặc rỗng. Kết quả cuối cùng sẽ ở trong nums Array. Độ phức tạp về thời gian là O (N) vì chúng ta đang duyệt qua mảng một lần.

Độ phức tạp về thời gian - O (N)

Độ phức tạp của không gian - O (1)

Ví dụ

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);
   }
}

Đầu ra

[1,3,12,0,0]