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

Làm cách nào để tìm số bị thiếu và số lặp lại trong một mảng đã sắp xếp mà không cần sử dụng bất kỳ hàm có sẵn nào bằng C #?

Để tìm số còn thiếu

Tạo một mảng mới và duyệt qua toàn bộ mảng và làm cho số đúng trong mảng mới nếu số được tìm thấy Duyệt qua toàn bộ mảng và trả về phần tử sai đầu tiên là phần tử bị thiếu.

Để tìm phần tử lặp lại

Phần tử true đầu tiên từ mảng mới sẽ là phần tử lặp lại.

Ví dụ

using System;
namespace ConsoleApplication{
   public class Arrays{
      public void MissingNumberAndRepeatedNumber(int[] arr){
         bool[] tempArray = new bool[arr.Length + 1];
         int missingelement = -1;
         int repeatingelement = -1;
         for (int i = 0; i < arr.Length; i++){
            int index = arr[i];
            if (!tempArray[index]){
               tempArray[index] = true;
            }
         };
         for (int i = 0; i < tempArray.Length; i++){
            if (!tempArray[i]){
               missingelement = i;
               break;
            }
         }
         int[] tempArray1 = new int[arr.Length + 1];
         for (int i = 0; i < arr.Length; i++){
            int index = arr[i];
            if (tempArray1[index]==0){
               tempArray1[index] = 1;
         }else if (tempArray1[index]==1){
            tempArray1[index] = 2;
      }
   };
   for (int i = 0; i < tempArray1.Length; i++){
         if (tempArray1[i]==2){
            repeatingelement = i;
            break;
         }
      }
      Console.WriteLine(missingelement);
      Console.WriteLine(repeatingelement);
   }
}
class Program{
      static void Main(string[] args){
         Arrays a = new Arrays();
         int[] arr = { 0, 1, 1, 3, 4 };
         a.MissingNumberAndRepeatedNumber(arr);
         Console.ReadLine();
      }
   }
}

Đầu ra

2
1