Heim >Web-Frontend >js-Tutorial >JavaScript-Implementierung des Twitter-Puddles-Algorithmus example_javascript skills

JavaScript-Implementierung des Twitter-Puddles-Algorithmus example_javascript skills

WBOY
WBOYOriginal
2016-05-16 16:28:481395Durchsuche

Ich habe heute eine sehr interessante Algorithmusfrage gefunden. Das Folgende ist die Algorithmusbeschreibung, die aus einer Interviewfrage auf Twitter abgeleitet ist.

Beschreibung des Twitter-Puddles-Algorithmus

Schauen Sie sich zuerst ein Bild an

Die Zahlen im Bild oben werden basierend auf dem Inhalt eines Arrays beschrieben. Schließlich wird die Höhe einer Wand basierend auf der Größe jeder Zahl simuliert, und schließlich wird eine Wand generiert Es regnet, diese Wand kann installiert werden. Wie viel Wasser, in Einheiten von 1.

So sieht eine Wand nach dem Befüllen mit Wasser aus

Nachdem ich das obige Bild gelesen habe, finde ich es sehr interessant. Lassen Sie uns kurz die Implementierung des Algorithmus analysieren

Tatsächlich ist dieses Prinzip relativ einfach. Insgesamt gibt es ein paar wichtige Punkte:

1. Die äußerste linke und rechte Seite darf nicht mit Wasser gefüllt sein
2. Die Höhe der Wasserfüllung richtet sich nach dem Minimum der beiden Maximalwerte auf der linken und rechten Seite

Im Folgenden verwenden wir js, um es einfach zu implementieren:

Code kopieren Der Code lautet wie folgt:

/**
* Berechnen Sie, wie viel Wasser eine Wand mit dem Array-Element als Höhe aufnehmen kann
* Array-Beispiel [2,5,1,2,3,4,7,7,6,9]
**/
Funktion getWaterCounts(arg){
var i = 0,
        j = 0,
Anzahl = 0;
// Sowohl das erste als auch das letzte Element müssen ausgeschlossen werden
for(i = 1; i < arg.length - 1; i ){
      var left = Math.max.apply(null, arg.slice(0, i 1));
      var right = Math.max.apply(null, arg.slice(i, arg.length));
        var min = left >= right : left;
              // Der kleinere der Maximalwerte auf der linken und rechten Seite hat Vorrang
​​​​ //Wenn der aktuelle Wert größer oder gleich diesem Wert ist, tun Sie nichts
           if(arg[i] < min){
Anzahl = min - arg[i];
}
}
console.log(count);
}
getWaterCounts([2,5,1,2,3,4,7,7,6,9]); // 11

Zusammenfassung

Hey, die Implementierung ist ziemlich einfach. Solange Sie bereit sind zu denken, können Sie mit js viele lustige Dinge erreichen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn