This repository contains my solutions to LeetCode problems in Rust.
All problems are solved in VS Code using the LeetCode extension.
# | Title | Solution | Difficulty | Speed score | Memory score | Comments |
---|---|---|---|---|---|---|
1 | Two Sum | Rust | Easy | 23.84 % | 68.85 % | Two pointers: one at |
9 | Palindrome Number | Rust | Easy | 69.35 % | 17.69 % | Split into digits and converge towards center |
13 | Roman to Integer | Rust | Easy | 100 % | 16.15 % | Use mapping for combinations 🤷 |
14 | Longest Common Prefix | Rust | Easy | 100 % | 55.24 % | Filter remaining strings for containing characters from first one |
20 | Valid Parentheses | Rust | Easy | 50.15 % | 19.94 % | Stack |
21 | Merge Two Sorted Lists | Rust | Easy | 6.97% | 35.95% | Make list of ordered nodes and collapse it from the end |
26 | Remove Duplicates from Sorted Array | Rust | Easy | 100 % | 78.6 % | Make list with uniques and then replace first |
27 | Remove Element | Rust | Easy | 79.48 % | 46.72 % | Use two pointers (from start and end) |
35 | Search Insert Position | Rust | Easy | 78.53 % | 66.75 % | Check when difference with target changes signs |
58 | Length of Last Word | Rust | Easy | 100 % | 40.44 % | Reset counter on whitespace, except for the last character |
66 | Plus One | Rust | Easy | 79.3 % | 73.02 % | Split number into digits and do carry overs for digits preceeding urrent index |
67 | Add Binary | Rust | Easy | 26.51 % | 26.05 % | Similar to the 66 |
69 | Sqrt(x) | Rust | Easy | 100 % | 74.03 % | Newton's method for calculating square root |
70 | Climbing Stairs | Rust | Easy | 100 % | 37.6 % | Recurrence @ |
83 | Remove Duplicates from Sorted List | Rust | Easy | 9.48 % | 88.79 % | List with unique entries and then wrap the values from end |
88 | Merge Sorted Array | Rust | Easy | 83.65 % | 47.4 % | Three pointers (for |
94 | Binary Tree Inorder Traversal | Rust | Easy | 100 % | 38.52 % | Recursion while enforcing the left-root-right order + clone the nodes accessed as refs and borrowed from RefCells |
100 | Same Tree | Rust | Easy | 100 % | 91.67 % | Recursion with match that covers cases for node_1 and node_2 (etc. (None,None) ) that does triple boolean expression comaring lefts, roots and rights |
101 | Symmetric Tree | Rust | Easy | 100 % | 29.84 % | Check if (L,R) is (None,None) or (Some,Some) with equal L and R's ( |
104 | Maximum Depth of Binary Tree | Rust | Easy | 100 % | 13.27 % | Create vector of ints with depths for each branches and stop at None with pushing the current_depth |
108 | Convert Sorted Array to Binary Search Tree | Rust | Easy | 72.86 % | 37.14 % | Recursion, with values split at middle index for left and right branches + calculating middle index w.r.t. to evenness of nums length (substract 1 if even) |
110 | Balanced Binary Tree | Rust | Easy | 100% | 16.98% | Height for branch is 1 + max of |
111 | Minimum Depth of Binary Tree | Rust | Easy | 58.24 % | 6.59 % | Recursion with running counter for branch, if two branches are present - choose the minimum counter value, if at None return counter - 1
|
112 | Path Sum | Rust | Easy | 65.6 % | 28.8 % | At each node check if there are available paths on left and/or right. If one is available, go down that path only with recursion, if both - check both and return OR of their respective recursion calls. If there are no paths left, check if sum == target (there is nowhere left to go). At each step increment sum by val
|
118 | Pascal's Triangle | Rust | Easy | 84.02 % | 58.9 % | Use previous row entries from 0 to len - 1 to calculate inner numbers of next row, append 1 s to its start and end. First row is always [1] , second one is always [1,1] . Use running row counter. |
119 | Pascal's Triangle II | Rust | Easy | 100 % | 47.78 % | Same as 118, but only return the last row |
121 | Best Time to Buy and Sell Stock | Rust | Easy | 89.95 % | 68.92 % | Keep track of minimum price and maximum profit (greedy algorithm) |
125 | Valid Palindrome | Rust | Easy | 100 % | 34.21 % | Iterate over characters forwards and backwards, while skipping non-alphanumeric characters (while also advancing index), and compare their lowercase ASCII representations |
136 | Single Number | Rust | Easy | 81.45 % | 62.16 % | Iterate and keep track on seen numbers, if a number is seen twice - remove it from cache - the result is the remaining entry (there is also a trick with XOR operator): result ^= number
|
141 | Linked List Cycle | - | Easy | NaN | NaN | NOT AVAILABLE IN RUST (due to difficulties with multi-pointers in Rust i.e. borrowing rules) |
144 | Binary Tree Preorder Traversal | Rust | Easy | 100 % | 53.97 % | Recursion with root -> left -> right order (the usual None/Some letf-right schtick) |
145 | Binary Tree Postorder Traversal | Rust | Easy | 100 % | 45.28 % | Recursion with left -> right -> root order (just change the order in the previous problem of appending values 🤷) |
160 | Intersection of Two Linked Lists | - | Easy | NaN | NaN | NOT AVAILABLE IN RUST (due to difficulties with multi-pointers in Rust i.e. borrowing rules) |