Leetcode Lessons Learned
As I’ve been working my way through Leetcode I’ve picked up a few new tricks. Some of these are fairly standard, like the sliding window technique for array analysis, but others are somewhat less intuitive. I gained a number of insights through experimentation, and these may be specific to the Kotlin compilers for Leetcode in particular. I figured they would still be worth mentioning in any case. One of the first things that surprised me as I started the Leetcode 75 Study Plan for Kotlin was how efficient StringBuilder was.
Real-World Applications of Leetcode
As I’ve been grinding through LeetCode problems I’ve been reminded of some of the real-world applications of the algorithms used during my past life as an Army officer. The “Call For Fire” (CFF) is one such example. A CFF is a radio request for artillery fire and is performed by a Forward Observer (FO) using a map, compass, protractor, binoculars with reticle pattern, and a target. Before contacting the artillery battery, the FO makes their best guess with regards to the location of the target on their map.
Dealing with Disappointment
At the start of the year I wrote a blog entry outlining my goals for the year, specifically: Learn Rust. Use it to build a StarCraft bot. Climb three new mountains. Complete the Mazamas Intermediate Climbing School (ICS) I accomplished the first goal pretty early on. You can read about it here. The second took a little longer, but I eventually summitted three new mountains, Mt. Hood, Old Snowy, and Three Finger Jack.
Leetcode Grinding
The past couple months I’ve been working my way through different LeetCode problems because they force me to grapple with challenges that I don’t really see in my day to day work. I’ve shifted from HackerRank in order to increase the variety of questions that I see. The problems I’ve been working on are part of a curated set called “LeetCode 75”. These cover string operations, two pointer problems, sliding windows, prefix sums, stacks, queues, linked lists, binary trees, graphs, depth first/breadth first search, heaps, bits, and dynamic programming.
The Utility of Today's AI
Last month’s article foreshadowed this article’s topic a bit with the sources cited at the bottom. ChatGPT generated the Rust code snippets after I told it “Write a Rust queue using a linked list.” I had to specify that it use a linked list, otherwise ChatGPT would have imported the Rust queue library which uses a less efficient vector implementation. DALL-E generated the image when provided the title of the article, “Rust queue performance.
Older »