C# :: Aufgabe #341

3 Lösungen Lösungen öffentlich

Kleinste positive Zahl in einem Array

Fortgeschrittener - C# von JKooP - 21.11.2020 um 11:42 Uhr
Gegeben sei ein (beliebig großes) unsortiertes Integer- Array welches sowohl aus positiven als auch negativen Zahlen besteht.
Ermittelt werden soll die erste fehlende positive Zahl im Array.

Beispiele:
arr = [1, 2, 0] sortiert: [0, 1, 2]
Lösung: 3

arr = [5, 4, -2, -1, 1] sortiert: [-2, -1, 1, 4, 5]
Lösung: 2

arr = [6, 7, 8, 9, 10]
Lösung: 1

arr = [-4, -2, -1]
Lösung: 1

arr = [1, 2, 3, 4, 2147483647, 8]
Lösung: 5

arr = []
Lösung: 1

Viel Spaß

Lösungen:

vote_ok
von NackZZ (80 Punkte) - 18.12.2020 um 23:29 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = new int[12];
            Random rng = new Random();
            int fill_rng;
            string numbers_text = "";
            int ausgabe_number = 0;
            bool end_checker = false;
            int n = 1;


            for (int i = 0; i < 12; i++)
            {
               fill_rng = rng.Next(-10, 10);
               numbers[i] = fill_rng;
            }
            for (int i = 0; i < numbers.Length; i++)
            {
                if(numbers[i] > 0) {
                numbers_text += Convert.ToString(numbers[i]);
                }
            }
            while (end_checker != true)
            {
                if (numbers_text.Contains(Convert.ToString(n)))
                {
                       end_checker = false;
                }
                else {  end_checker = true;
                    ausgabe_number = n;
                }
                n++;
            }
            foreach (var item in numbers)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("\n"+ausgabe_number);
        }
    }
  }
vote_ok
von AchtungHuPe (170 Punkte) - 29.12.2020 um 22:05 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

namespace ErsteFehlendeZahl_341
{
    class Program
    {
        static void Main(string[] args) 
        {
            var arr = new int[] { 1, 2, 0 };

            // Array optimieren: Nur positive Zahlen, jede Zahl kommt nur 1x vor
            Array.Sort(arr);
            var workArr = new List<int>();
            for (var i=0; i < arr.Length; i++)
            {
                if (arr[i] > 0 && !workArr.Contains(arr[i]) )
                    workArr.Add(arr[i]);
            }

            AnalyseList(workArr);
        }

        public static void PromptSolution(int missing)
        {
            Console.WriteLine($"Die erste fehlene Zahl ist '" + missing + "'");
            Console.ReadLine();
        }

        public static void AnalyseList(List<int> _workArr)
        {
            int solution = 0;

            // Spezialfälle wo das Ergebnis sofort feststeht
            if (_workArr.Count() == 0 || _workArr[0] > 1)
                solution = 1;
            else
            // Suche die Lücke
            {
                for (int i = 0; i < _workArr.Count(); i++)
                {
                    if (i + 1 != _workArr[i])
                    {
                        solution = i + 1;
                        break;
                    }
                    // i++;
                }

                // Letze Möglichkeit:
                if (solution == 0)
                    solution = _workArr.Last() + 1;
            }

            PromptSolution(solution);
        }

    }
}
1x
vote_ok
von Frank (410 Punkte) - 23.02.2021 um 19:16 Uhr
Quellcode ausblenden C#-Code
using System;

namespace KleinstePositiveZahl
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] liste = new int[] { 1, -4, 2, -1, 0, 6, 7, 4 };
            int count = 1;
            while (true)
            {
                int index = Array.IndexOf(liste, count);
                if (index == -1)
                    break;
                count++;
            }
            Console.WriteLine($"Wert: {count}");
        }
    }
}
1809710

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.