0001 two sum - #2
Conversation
| # 1. Two Sum | ||
|
|
||
| ## Step 1 | ||
| - 二重ループじゃ良くないなと思いつつ総当たりしか思いつきませんでした。 |
There was a problem hiding this comment.
まあ、見積もって動く場合にはそれでもいいんですが、私の疑問は、仮に数字の書かれた紙が1000枚与えられて、和がいくつになる組みを見つけてくれといわれたら、100万回足し算をしますかということです。
There was a problem hiding this comment.
具体的な見積もりも手作業からの類推も、癖付けていきたいと思います。
| - エラーケースに自分は空リストを返していたが、先達にあった | ||
| raise ValueErrorのほうがベターだと思い変更。 |
There was a problem hiding this comment.
ベターと思ったのはどういう理由からでしょうか?raise するにしても Exception など選択肢がいくつかあるとも思います。
ちなみに私もValueError を返すのが好みです。入力値がおかしいことを端的に示すことができる感じがするためです。
There was a problem hiding this comment.
空リストよりraiseのほうが明示的にエラーを示せる、Exceptionは拾う範囲が大きいし(今回はないですが)エラーごとの処理を分けたいときに不便だからといったところです。ValueErrorを選んだ理由は同様です!
| if diff in num_to_index: | ||
| return [num_to_index[diff], i] |
There was a problem hiding this comment.
個人的には、早期 return で答えを返すよりも、条件を反転させて continue する方が好みです。早期 return で答えを返すようにしていると、あとから別の早期 return を追加していった場合にどれが答えを返しているのかの視認性が悪くなるのではと思うためです。
https://discord.com/channels/1084280443945353267/1201211204547383386/1207251531041210408
if not diff in num_to_index:
num_to_index[num] = i
continueThere was a problem hiding this comment.
参照先の、
if の中のほうが、普通ではない、異常な、変わったことが起きて欲しいという感覚
これは同じ感覚なのでcontinue派になります。
早期 return で答えを返すようにしていると、あとから別の早期 return を追加していった場合にどれが答えを返しているのかの視認性が悪くなる
あまり出会ったことがないのですが仰っていることはわかりますので、頭に留めておきます。
| - チェイン法のハッシュマップはハッシュ値 mod 配列長が等しいと | ||
| そこでリストを作る(アルゴリズム図鑑)のでO(1)とは限らないらしい。 | ||
| そのうちPythonの辞書の実装を見てみたい。 | ||
| - enumurate()を初めて知る。 |
There was a problem hiding this comment.
pythonの経験の程度がわからないので,念のためコメントしておきますが,pythonのドキュメントでいうとこことかはざっとみてみるのはいいかもしれません.
https://docs.python.org/3/library/functions.html
There was a problem hiding this comment.
まだ2ヶ月くらいのぺーぺーですのでこのあたりも知らないものがありました、共有ありがとうございます。
https://leetcode.com/problems/two-sum/description/