最近LeetCodeというサービスを発見したのでときたま遊んでいます。

LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

最近はフレームワークやSDKの作法にならってアプリケーションを書くことが多いので素のプログラミングというかアルゴリズムを意識して書くことが少なく、衰えた筋肉を鍛えているような感じがして気持ちがいいです。

無料でも一部使えるのでとりあえず登録して問題一覧を見てみますと、

Problems - LeetCode

こんなふうに出ています。

一旦MediumやHardを飛ばしつつやっていますが、Easyでもなまった体には簡単じゃないという。。。

僕が見た限りだとそれぞれの問題は、ある入力を受け取って正しい結果を返す関数を書くという形式になっています。

例えば第一問目は、

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

という問題で、↓のような例まで紹介されています。

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

そういえば、英語です。が、この程度なら問題なく読みたいところ。

LeetCodeにはエディタと判定機能がついているので、LeetCode上でコードを書いて試しに動かしたり、正式に回答として登録したりできます。

試しに動かすときに使われるテストケースと正式な回答として判定するときのテストケースはやはり回答時のほうが厳しくて、項目数が多かったりエッジケースだったりとより難しい入力値が与えられます。

僕も第一問を素直に実装して解けたと思ったらタイムアウトで不正解になってしまいました。

衰えたプログラミング筋の筋トレだと思ってちょっとずつやっていこうかなと思います。