Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีหาตัวเลขที่หายไปและตัวเลขที่ซ้ำในอาร์เรย์ที่เรียงแล้วโดยไม่ใช้ฟังก์ชัน built-in ด้วย C#


การหาตัวเลขที่หายไป

สร้างอาร์เรย์ใหม่และวนลูปผ่านอาร์เรย์ทั้งหมด ทำให้ตัวเลขในอาร์เรย์ใหม่เป็น 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