Zum Beispiel angesichts der Array A={1,3,2,17,10}
, ist die Größe des größten Sub-Array mit jedem Element zu finden die Antwort 3
, weil die Sammlung {1,2,3}
die größte Sammlung so ist, dass die für einige a
in Sammlung, jedes Element in der Sammlung ist der Bereich [a, a + 4]
(das ist a+4
inklusive).Wo ist der Fehler in meinem Algorithmus innerhalb DISTA
Mein Algorithmus ist wie
int[] toys = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
Array.Sort(toys);
int max_together = 0;
for(int i = 0; i < toys.Length; ++i)
{
int plus_four = toys[i] + 4;
int j = i + 1;
for(; j < toys.Length && toys[j] <= plus_four; ++j);
int span = j - i;
if(span > max_together)
{
max_together = span;
}
}
und es wird die meisten der Testfälle scheitern.
Oder vielleicht https://www.hackerrank.com/challenges/priyanka-and-toys?h_r=next-challenge&h_v=zen lese ich falsch ...
Meine vollständige Lösung ist
using System;
using System.Collections.Generic;
using System.IO;
class Solution
{
static void Main(String[] args)
{
Console.ReadLine(); // N
int[] toys = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
Array.Sort(toys);
int max_together = 0;
for(int i = 0; i < toys.Length; ++i)
{
int plus_four = toys[i] + 4;
int j = i + 1;
for(; j < toys.Length && toys[j] <= plus_four; ++j);
int span = j - i;
if(span > max_together)
{
max_together = span;
}
}
Console.WriteLine(1 + (toys.Length - max_together));
}
}