Create 209. Minimum Size Subarray Sum.md#48
Conversation
| https://github.com/olsen-blue/Arai60/pull/50/files | ||
|
|
||
| - for で right 固定して、while で left を削るイメージ 同じ | ||
| - 番兵はどうするか。math.infで良いと感じてしまう。型違うけど、それはそれでおかしな実装をしたときに気づける気もする。 |
There was a problem hiding this comment.
目的としては、プログラムがこれから最小値を探索していくために、明らかに大きすぎる異物みたいなのを初期値として設定できれば良いので、math.infでも良いと思います。
一部、型に配慮したい人もいるみたいなので、状況に応じてsys.maxsizeとかに切り替える柔軟さがあれば良いのかもしれません。
| for base in range(len(prefix_sum)): | ||
| desired = target + prefix_sum[base] |
There was a problem hiding this comment.
baseは、若干抽象的な気がしました。from_indexとかでどうでしょうか。
desiredも、target_prefix_sumとかですかね、ちょっと長いですがtargetと差別化したいですよね。
There was a problem hiding this comment.
レビューありがとうございます。
いつも参考にさせていただいています。
意図としては
from_indexは閉区間ぽさを感じて変えてみました。
desiredはスコープ短いので、変数で説明するより、中身を読むことを期待しました。
でもおっしゃる通り、改善の余地がありそうです。
There was a problem hiding this comment.
コメントを書くという選択肢もあります。
ちなみに、コードを読んでもらう負荷をなるべく下げる工夫をすることを推奨されていると自分は理解しています。
https://discord.com/channels/1084280443945353267/1233603535862628432/1235977874528538674
|
|
||
| ``` | ||
|
|
||
| 線形 |
There was a problem hiding this comment.
累積和をループしながら構築することもできますが、この解法のように事前に累積和を求めておくことで、メインのループの中身のコードがいくらかシンプルになるというメリットはあるかもしれませんね。
| if not nums: | ||
| return 0 | ||
| if target <= 0: | ||
| return 1 |
| return min_length | ||
| ``` | ||
|
|
||
| 開区間を使うと処理がシンプルにかけるが、prefix_sumの最初を0にする必要があるのが少し気になるか。 |
There was a problem hiding this comment.
開区間と呼ぶならば、「何」についての区間を考えているかをはっきりさせたほうがいいです。
どのような区間(つまり不等式で作られる範囲)と思って開と呼んでいますか。
私は半開区間と呼んでもいいかなと思います。
There was a problem hiding this comment.
lo < x の部分だけを見て開区間と書いていました。
でも言われてみれば、lo < x <= hi なので半開区間でした。
https://leetcode.com/problems/minimum-size-subarray-sum/description/