🍣

October LeetCoding Challenge 2020 の挑戦記録

2020/11/02に公開

2020 年 10 月の LeetCoding Challenge 挑戦記録のまとめです。

結果

  • 正解にたどり着けた問題数: 31/31 (100%)
  • Runtime beats の傾向:
Runtime beats 回数 割合
99% 以上 20 64.52%
95% 以上 23 74.19%
90% 以上 24 77.42%

記事一覧

Day Difficulty Runtime beats 問題タイトル / 記事リンク
1 Easy 99.74% Number of Recent Calls
2 Medium 5.80% Combination Sum
3 Medium 100.00% K-diff Pairs in an Array
4 Medium 12.44% Remove Covered Intervals
5 Easy 100.00% Complement of Base 10 Integer
6 Medium 100.00% Insert Into a Binary Search Tree
7 Medium 100.00% Rotate List
8 Easy 100.00% Binary Search
9 Medium 99.73% Serialize and Deserialize BST
10 Medium 56.09% Minimum Number of Arrows to Burst Balloons
11 Medium 81.40% Remove Duplicate Letters
12 Easy 99.31% Buddy Strings
13 Medium 41.43% Sort List
14 Medium 100.00% House Robber II
15 Medium 100.00% Rotate Array
16 Medium 100.00% Search a 2D Matrix
17 Medium 98.74% Repeated DNA Sequences
18 Hard 97.31% Best Time to Buy and Sell Stock IV
19 Medium 98.43% Minimum Domino Rotations For Equal Row
20 Medium 99.60% Clone Graph
21 Medium 100.00% Asteroid Collision
22 Easy 100.00% Minimum Depth of Binary Tree
23 Medium 31.29% 132 Pattern
24 Medium 99.75% Bag of Tokens
25 Hard 94.21% Stone Game IV
26 Medium 100.00% Champagne Tower
27 Medium 100.00% Linked List Cycle II
28 Easy 100.00% Summary Ranges
29 Medium 100.00% Maximize Distance to Closest Person
30 Medium 99.43% Number of Longest Increasing Subsequence
31 Hard 84.07% Recover Binary Search Tree

振り返り

  • 今月はいずれの問題も discuss や solution を一度も見ずに自力で解答にたどり着けた 👍
    • とは言えど、最適解にたどり着けないこともまだしばしば… 👎
  • 今月から runtime beats を記録するようにしてみたけど、まずまずといったところ
    • 50% に満たないことが 4 回もあって不甲斐ない… 👎
    • Runtime beats 90% 以上を 9 割以上、99% 以上を 7 割以上にするのを目標にしたい
  • ちょっとした記述の違いで 1ms 増えたり減ったりして、JVM の気持ちを理解するにはまだ修行が必要そう

所感

前職の有給消化中&転職活動中だった今年の6月ぐらいから LeetCode に日常的に取り組むようにしているのですが、LeetCode をやっていて業務に直接的に役立ったことがあったかというと「ほぼ皆無かなー?」というのが 現時点の 僕の答えです。

結局のところ、GAFA などと呼ばれる大手 IT 企業のコーディングインタビュー対策がこの手のサービスが存在しまたユーザが利用する主目的であって、LeetCode を 400 問解いたところでソフトウェアエンジニアとしての仕事ができるかといったらそうではないことに (採用担当者的な立ち位置で面接に関わる場合は) 注意が必要だと思います。特に業務で求められるであろう、コードのリーダビリティやメンテナビリティは問題数をこなしただけではまったく身に付く気がしないですからね…

でもだからといって、LeetCode をやるのはまったく無意味かといったら「そうではない」と僕は考えています。与えられた問題をプログラミング可能な問題として解釈し、時間・空間計算量的に適切なデータ構造とアルゴリズムを選択しつつ、言語や VM 特有のパフォーマンス的な観点に気を払いながらコードに落とし込んでいく という プログラミングの原始的なプロセス は実は日々の業務ではそれほど多く経験できるわけではなかったりするので、それを補う目的で日々 LeetCode の問題に取り組むのはある意味でソフトウェアエンジニアとしての「素振り」に相当するのかな… と感じています。

Discussion