Eignet sich PHP für Datenstrukturen und Algorithmen?
Zum Lernen ja, sobald du eine Gewohnheit ablegst: für alles zu einem array zu greifen. Das Array von PHP ist flexibel genug, um Liste, Dictionary und Stack zu sein, und genau das verbirgt die Kosten jeder Operation. Baue die Strukturen selbst, und PHP ist eine völlig brauchbare Sprache, um über Algorithmen nachzudenken, und die naheliegende für Interviews, wenn PHP dein Job ist.
Welche SPL-Klassen entsprechen welchen Datenstrukturen?
SplStack und SplQueue sind ein Stack und eine Queue, beide auf SplDoublyLinkedList aufgebaut; SplMinHeap und SplMaxHeap sind Heaps; SplPriorityQueue ist ein nach Priorität geordneter Max-Heap; und SplFixedArray ist ein Array fester Größe mit ganzzahligen Indizes, das weniger Speicher braucht als ein array. Das einfache array ist deine Hashtabelle. Eine Baum-, Trie- oder Graph-Klasse gibt es nicht, die schreibst du also selbst, in den Schritten eins und zwei.
Warum ist array_shift für eine Queue in PHP langsam?
Weil es nach dem Entfernen des ersten Elements jeden verbleibenden ganzzahligen Schlüssel ab null neu nummeriert, was das ganze Array berührt: Eine Queue auf Basis von array_shift kostet O(n) pro Entnahme und quadratische Zeit, bis sie leer ist. Nimm SplQueue, oder führe stattdessen einen Kopfindex ins Array mit und schiebe ihn weiter. In Schritt eins baust du selbst eine Queue, und so siehst du den Unterschied am sichersten.
Ist sort() in PHP stabil?
Seit PHP 8.0 ja: sort(), usort(), asort() und die anderen Sortierfunktionen lassen gleiche Elemente in ihrer ursprünglichen Reihenfolge. Vor 8.0 gab es dieses Versprechen nicht, daher konnte sich Code, der von der Reihenfolge gleicher Elemente abhing, zwischen Versionen unterschiedlich verhalten. Von den acht Sortierverfahren in Schritt drei sind Mergesort und Insertionsort stabil, Quicksort und Heapsort nicht; danach weißt du, warum.
Welche Kurse auf diesem Pfad werden nicht in PHP unterrichtet?
Drei: Dynamische Programmierung und die Python-Interviewreihe werden in Python unterrichtet, Bitmanipulation in C++. Sie sind nach den Schritten aufgeführt, jeweils mit einem Link, der den Kurs in seiner eigenen Sprache öffnet. Eine Memo-Tabelle ist in PHP ein array mit dem Teilproblem als Schlüssel. Eine Falle beim Übertragen von Bit-Tricks: Sind beide Operanden von &, | oder ^ Strings, arbeitet PHP mit den Bytewerten ihrer Zeichen und gibt einen String zurück, also stell zuerst sicher, dass die Werte Ganzzahlen sind.
Muss ich PHP können, bevor ich mit diesem Pfad anfange?
Mindestens Funktionen, Arrays, Schleifen und Klassen, denn ein Knoten ist naturgemäß ein Objekt mit einer Eigenschaft $next. Wenn das neu für dich ist, bringt dich Coddys PHP-Kurs zuerst dorthin, kostenlos, und dieser Pfad setzt dort an, wo er endet.