Kacam.net

Algorithmen

同样是 O(n log n),为什么快排更快

快排和堆排都是 O(n log n),实测差两三倍。差在哪?

Vorlage kopieren, dann ein Modell wählen. Es spielt den Interviewer und fragt dich Szene für Szene ab, statt dir die Antwort hinzulegen.

Auf einem Telefon mit installierter App öffnet das System die App direkt. In WeChat lassen sich keine externen Apps öffnen — öffne es zuerst im Browser.

Am Ende des kopierten Textes steht der Lösungsschlüssel, mit dem das Modell dich bewertet. Lies ihn nicht vorher — es zählt, dass du selbst darauf gekommen bist.

大 O 有意扔掉了常数和低阶项,而在真实机器上,被扔掉的那些经常就是全部的差别 —— 一次 L1 命中约 1ns,一次内存访问约 100ns,两个数量级。

这一份逼你算数:动态数组扩容为什么必须翻倍、建堆到底是 O(n) 还是 O(n log n)、1 秒时限下 n=10⁵ 排除了哪些复杂度。答「更快」一律要追「快多少」。

它是 04、05、10 那几份的地基,建议早做。

★★★★☆ · etwa 40 Min. · Geprüft wird: 均摊与最坏与平均、常数因子、缓存局部性、数量级估算

Was diese Übung trainiert

Komplexität Amortisierte Analyse Cache und Konstanten

Schon gemacht?

Melde dich an, um festzuhalten, dass du diese Aufgabe geübt hast — beim nächsten Mal siehst du, wann das war.

Notizen von Leuten, die das gemacht haben

Noch hat niemand etwas geschrieben. Erzähl nach dem Durchlauf, was dabei herauskam — welche Szene dich ins Stocken brachte, welche Schlussfolgerung du danach geändert hast.

Anmelden, um eine Notiz zu schreiben.

So funktioniert es

Diese Reihe lehrt, statt zu verhören: sie führt dich, statt zu bohren, bis dir nichts mehr einfällt. Wenn du hängst, fragt sie zuerst, auf welcher Ebene (nie gehört / weiß es, aber nicht warum / weiß warum, kriege es aber nicht hin) und entscheidet dann, was sie gibt. Erst wenn sie dich zweimal an derselben Stelle geführt hat, sagt sie es direkt — und lässt dich es danach in eigenen Worten wiederholen.

So fängst du an

  1. Eine auswählen, öffnen, den Prompt kopieren.
  2. In ein ganz neues, leeres Gespräch einfügen, nichts sagen, auf die erste Frage warten.
  3. Erst von Hand durchspielen, dann Code — sie unterbricht dich. Ein Array der Länge 2 durchzurechnen bringt mehr, als die Vorlage zehnmal zu schreiben.

Vier Zurufe, jederzeit möglich

  • 跳过 sofort zur nächsten Szene
  • 换个说法 diese Stelle aus einem anderen Blickwinkel erklären
  • 直说吧 die Antwort ganz sagen und mich danach wiederholen lassen
  • 复盘 direkt zum Abschluss springen und die Auswertungskarte ausgeben

Drei Fallen

  • Lies das Lösungsblatt am Ende nicht vorher — der Abschnitt „so denkt man es sich falsch“ ist die Antwort auf jede einzelne Frage.
  • Stürz dich nicht auf den Code. Gerade bei Algorithmen verdeckt Codeschreiben am besten, dass man es noch nicht durchdacht hat.
  • Wenn sie anfängt, dich zu loben, verweise sie auf die Regel „lob mich nicht“. Führen ist kein Bemuttern.

Keine Idee für eine Lösung? Fang mit der Zustandsdefinition an. Immer Fehler an den Rändern? Binäre Suche und Präfixsummen. Du erkennst die Form eines Problems nicht? Monotoner Stack und Schiebefenster. Die Übung zur Komplexität trägt mehrere andere — mach sie früh.