C# :: Aufgabe #341
3 Lösungen
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ß
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:
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); } } }
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); } } }
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}"); } } }