C#-Aufgaben auf LeetCode: Wie man sie löst und was man lernen sollte

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum ist LeetCode zum Übungsplatz für C#-Entwickler geworden?

\n\n

Wenn Sie in C# programmieren und zu FAANG (oder einfach zu einem guten Produktunternehmen) wollen, werden Sie früher oder später auf LeetCode landen. Das ist kein modischer Trend – es ist ein echtes Auswahlinstrument. Stellen Sie sich vor: Sie kennen ASP.NET Core hervorragend, verstehen sich auf Entity Framework, aber im Vorstellungsgespräch werden Sie gebeten, einen Binärbaum an der Tafel (oder im Online-Editor) zu erstellen. Und dann beginnt die Magie.

\n\n

In diesem Artikel besprechen wir, wie man Aufgaben auf LeetCode in C# genau löst, welche Algorithmen und Datenstrukturen man zuerst lernen sollte und wie man das Lösen von Aufgaben von einer Qual in ein spannendes Abenteuer verwandelt. Spoiler: C# ist eine der bequemsten Sprachen für algorithmische Kämpfe, wenn man ihre Tricks kennt.

\n\n

Wo anfangen: Die richtige Strategie wählen

\n\n

Viele Anfänger machen den Fehler, sich kopfüber auf LeetCode Aufgaben C# zu stürzen und alles Mögliche zu lösen. Ergebnis: Burnout nach einer Woche. Verwenden Sie stattdessen die Methode der „drei Stufen“:

\n\n
    \n
  • Easy (einfach) – Ihre Basis. Hier lernen Sie, Code ohne Kompilierungsfehler auf Anhieb zu schreiben.
  • \n
  • Medium (mittel) – die Hauptarena. Hier wird die Fähigkeit getestet, Datenstrukturen zu kombinieren.
  • \n
  • Hard (schwer) – erst angehen, nachdem Sie 30-40 Medium-Aufgaben gelöst haben. Sonst – Schmerz und Enttäuschung.
  • \n
\n\n

Tipp: Beginnen Sie mit 10 Easy-Aufgaben, um die C#-Syntax und LINQ aufzufrischen. Gehen Sie dann zu Medium über. Und heben Sie sich Hard für den „Nachtisch“ auf – wenn Sie das Gefühl haben, bereit für dynamische Programmierung und Graphen zu sein.

\n\n

Welche Algorithmen muss ein C#-Entwickler kennen

\n\n

LeetCode geht nicht darum, Lösungen „auswendig zu lernen“. Es geht um Muster. Hier ist eine Liste von Themen, die in 90% der Aufgaben vorkommen:

\n\n

1. Arrays und Hash-Tabellen (HashSet, Dictionary)

\n

Der König von LeetCode. Die Aufgabe „Two Sum“ (LeetCode 1) ist die Visitenkarte. In C# wird sie mit Dictionary<int, int> in einer Zeile gelöst:

\n\n
public int[] TwoSum(int[] nums, int target) {\n    var map = new Dictionary<int, int>();\n    for (int i = 0; i < nums.Length; i++) {\n        int complement = target - nums[i];\n        if (map.ContainsKey(complement))\n            return new int[] { map[complement], i };\n        map[nums[i]] = i;\n    }\n    return new int[0];\n}
\n\n

Beachten Sie: Wir verwenden Dictionary, nicht List. Das ergibt O(1) für die Suche. Die Schlüsselfähigkeit ist zu verstehen, wann man Speicher für Geschwindigkeit opfern muss.

\n\n

2. Stapel und Warteschlange (Stack, Queue)

\n

Aufgaben zu Klammern (Valid Parentheses), umgekehrter polnischer Notation – Klassiker. In C# ist der Stapel als fertige Klasse Stack<T> implementiert:

\n\n
public bool IsValid(string s) {\n    var stack = new Stack<char>();\n    foreach (char c in s) {\n        if (c == '(') stack.Push(')');\n        else if (c == '{') stack.Push('}');\n        else if (c == '[') stack.Push(']');\n        else if (stack.Count == 0 || stack.Pop() != c) return false;\n    }\n    return stack.Count == 0;\n}
\n\n

Der Trick: Wir schieben sofort die schließende Klammer auf den Stapel, um später einfach zu vergleichen. Elegant und schnell.

\n\n

3. Verkettete Listen (LinkedList)

\n

Auf LeetCode gibt es oft Aufgaben zum Umkehren von Listen, Löschen von Knoten, Suchen von Zyklen. C# bietet LinkedList<T>, aber in den Aufgaben wird normalerweise eine eigene Klasse ListNode bereitgestellt. Lernen Sie, mit Zeigern (Referenzen) zu arbeiten. Beispiel für das Umkehren:

\n\n
public ListNode ReverseList(ListNode head) {\n    ListNode prev = null;\n    while (head != null) {\n        ListNode next = head.next;\n        head.next = prev;\n        prev = head;\n        head = next;\n    }\n    return prev;\n}
\n\n

Beachten Sie: Kein for oder foreach – nur while und Arbeit mit Zeigern. Das fördert algorithmisches Denken.

\n\n

Blogs

Buchempfehlungen