83. Remove Duplicates from Sorted List#3
Conversation
| という流れになっている。 | ||
|
|
||
| 個人的には、多重ループになっていない後者の方が読みやすいと思う。 | ||
| ただ、リストに重複が多い場合は重複の分`node is not None`の評価が余計に行われるため、パフォースは前者の方が良さそう。 |
There was a problem hiding this comment.
パフォーマンスの議論をするほどの問題ではないと思います。
パフォーマンスの議論の際は、「それぞれの処理時間は〇〇と××程度で、△△のようなケースでは後者が問題になる」といった形で整理されていると、より分かりやすくなると思います。
小田さんの記事も読んでみてください。
https://nuc.hatenadiary.org/entry/2025/11/29/#%E9%80%9F%E5%BA%A6%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96
There was a problem hiding this comment.
h-masderさん、レビューと記事のご共有ありがとうございます。
とても参考になりました。
メモを書いたときは、すべてのノードが同じ値を持っていた場合、isの判定がn(リストの長さ)回分多く行われるな、とぼんやり思っていました。
ただ、今冷静に考えるとこれはループ内の任意の処理に言えることですね。
ループ内のナノ秒単位の処理を削ることと可読性を天秤にかけるのは、確かに少しズレていました。
今後パフォーマンスについて議論する際は、定量的に整理するように気をつけます。
| node = head | ||
|
|
||
| while node is not None: | ||
| while (node.next is not None) and (node.val == node.next.val): |
There was a problem hiding this comment.
項ごとに () を付けないほうが多いと思います。
参考までにスタイルガイドへのリンクを共有いたします。
https://google.github.io/styleguide/pyguide.html#33-parentheses
Use parentheses sparingly.
It is fine, though not required, to use parentheses around tuples. Do not use them in return statements or conditional statements unless using parentheses for implied line continuation or to indicate a tuple.
なお、このスタイルガイドは“唯一の正解”というわけではなく、数あるガイドラインの一つに過ぎません。チームによって重視される書き方や慣習も異なります。そのため、ご自身の中に基準を持ちつつも、最終的にはチームの一般的な書き方に合わせることをお勧めします。
今回の問題
https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/
次回の問題
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/description/