2016-08-16 3 views
-4

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

Antwort

0

Auf kurzen Blick fand ich, dass Sie auf sortierten Array maximale Spannweite versuchen zu finden (dh 1, 2,3,10,17) während die Testfälle wollen, dass Sie die maximale Spannweite auf gegebenem Array (dh 1,3,2,17,10) finden, die vor der Sortierung.

0

Wenn Sie 1 Spielzeug kaufen, dessen Gewicht w1 ist, erhalten Sie alle Spielzeuge, deren Gewicht zwischen [w1, w1 + 4] liegt. In der Frage werden Sie aufgefordert, die Mindestanzahl von Spielzeugen zu finden, die Sie kaufen müssen, damit Sie alle Spielzeuge in der Eingabe erhalten. In diesem Beispiel A = {1,3,2,17,10}, ist die Antwort 3, weil Sie Spielzeug kaufen müssen 1 (oder 2 oder 3), 17 und 10.

Java-Code

int num[] = {1,3,2,17,10}; 
Arrays.sort(num); 
     int result=1; 
     int lastToy=num[0]; 
     for(int i=1;i<n;i++) 
      { 
      if(num[i] > lastToy+4) 
       { 
       result++; 
       lastToy= num[i]; 
      } 
     } 
Verwandte Themen