142 linked list cycle ii#3
Conversation
| set で書いた方は条件の入れ替えとかがあり得そうだけど自分の好み的には step1で書いたやつなので特に整形せず。 | ||
| あとは while ループの中でまず if を書くか、一歩進めてから if を書くか、はどうだろう。`current_node` がループ入っていきなり次に進むよりは、「今のノードは条件満たすかな?」→「満たさないから次に行こう」の方が読みやすいかも?ぱっと見そういう人が多そう。 | ||
|
|
||
| floyd の方は、fast と slow が出会う点を見つける処理を関数化するのが良いか。fast と slow を使い回すのはちょっと見づらい気がするので。あとは、最後の `while 1` だが、「合流するまで進みつづける。合流したらそこが答え」というのを素直に表現すると step2_floyd.py の最後の部分の方が好きかも。 |
There was a problem hiding this comment.
ありがとうございます。引き出しを増やして、意図を持って使い分けられるように練習していきます。
| # fast と slow が合流したなら、片方をスタート地点に戻して同じ速さで再度歩かせると次に合流する点がサイクルの始まりの点 | ||
| slow = head | ||
|
|
||
| while 1: |
There was a problem hiding this comment.
あとは、最後の
while 1だが、「合流するまで進みつづける。合流したらそこが答え」というのを素直に表現すると step2_floyd.py の最後の部分の方が好きかも。
自分もstep2のほうが意図が伝わりやすく読みやすいと思いました。
There was a problem hiding this comment.
ありがとうございます!他の方の意見が聞けて助かります
| # fast と slow が合流したなら、片方をスタート地点に戻して同じ速さで再度歩かせると次に合流する点がサイクルの始まりの点 | ||
| slow = head | ||
|
|
||
| while 1: |
There was a problem hiding this comment.
ありがとうございます。他の方見てもそのようでしたので覚えておきます。
|
|
||
|
|
||
| class Solution: | ||
| def detectMeetingPoint(self, head: Optional[ListNode]) -> Optional[ListNode]: |
There was a problem hiding this comment.
関数の名前は、snake_case で命名することをお勧めします。
参考までに、関連するスタイルガイドを共有いたします。
https://peps.python.org/pep-0008/#function-and-variable-names
Function names should be lowercase, with words separated by underscores as necessary to improve readability.
https://google.github.io/styleguide/pyguide.html#316-naming
function_name
LeetCode の解答では関数名が lowerCamel(mixedCase)で書かれていることがありますが、一般的な Python コードではあまり見かけません。PEP 8 でも以下のように、特殊な場合を除いて推奨されていません。
https://peps.python.org/pep-0008/#function-and-variable-names
mixedCase is allowed only in contexts where that’s already the prevailing style (e.g. threading.py), to retain backwards compatibility.
なお、これらのスタイルガイドが唯一の正解というわけではなく、数あるガイドラインの一つに過ぎません。
チームごとに好まれる命名規則が異なる場合もありますので、ご自身の中に基準を持ちつつ、最終的にはチームの一般的な書き方に合わせることをお勧めします。
There was a problem hiding this comment.
丁寧に教えていただきありがとうございます。lower camel case は見慣れないけどあり得るのかなと思っていましたが LeetCode がやや独特という感じなんですね。
なお、これらのスタイルガイドが唯一の正解というわけではなく、数あるガイドラインの一つに過ぎません。
チームごとに好まれる命名規則が異なる場合もありますので、ご自身の中に基準を持ちつつ、最終的にはチームの一般的な書き方に合わせることをお勧めします。
このスタンスを大事にします。
この問題:https://leetcode.com/problems/linked-list-cycle-ii/
次の問題:https://leetcode.com/problems/remove-duplicates-from-sorted-list/