Để 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