Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#을 사용하여 주어진 정수 배열에서 모든 0을 배열 끝으로 이동하는 방법은 무엇입니까?


MoveZeros 메서드를 만들고 배열을 탐색하고 배열에 있는 0의 수를 계산합니다. 카운트 크기에 따라 모든 최종 셀을 0으로 만듭니다. 배열 길이가 null이거나 비어 있으면 처리하지 않고 반환합니다. 최종 결과는 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]