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:
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);
}
}
}
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);
}
}
}
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}");
}
}
}
