#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
基本的にeasyのacceptanceが高い順から解いていこうかと思います。
前回
ゼロから始めるLeetCode Day5 「1266. Minimum Time Visiting All Points」
問題
1342. Number of Steps to Reduce a Number to Zero
与えられた自然数num
が奇数であれば1を引き、偶数であれば2で割ります。それを0になるまで繰り返した回数をカウントし、その回数を返す関数を作成せよという問題です。
ひとまずパッと思いついたものを書きます。
class Solution:
def numberOfSteps (self, num: int) -> int:
steps = 0
while num > 0:
if num % 2 == 0:
num //= 2
else:
num -=1
steps += 1
return steps
# Runtime: 28 ms, faster than 68.90% of Python3 online submissions for Number of Steps to Reduce a Number to Zero.
# Memory Usage: 13.8 MB, less than 100.00% of Python3 online submissions for Number of Steps to Reduce a Number to Zero.
書いた後に他の人のdiscussも色々見て見ましたがそこまで奇抜なものはありませんでした。
シンプルゆえにみな似通った答えになってしまうのかもしれませんね。
この問題に関しては正直あまり書くことないな・・・