การหาตัวเลขที่หายไป
สร้างอาร์เรย์ใหม่และวนลูปผ่านอาร์เรย์ทั้งหมด ทำให้ตัวเลขในอาร์เรย์ใหม่เป็น true หากพบตัวเลขนั้น วนลูปผ่านอาร์เรย์ทั้งหมดและคืนค่าองค์ประกอบ false แรกเป็นตัวเลขที่หายไป
การหาองค์ประกอบที่ซ้ำ
องค์ประกอบ true แรกจากอาร์เรย์ใหม่จะเป็นองค์ประกอบที่ซ้ำ
ตัวอย่าง
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();
}
}
}
ผลลัพธ์
2 1