82 remove duplicates from sorted list ii#5
Conversation
| dummy_head = ListNode(val=float("-inf"), next=head) | ||
| node = dummy_head | ||
| while node.next: | ||
| if node.next.next and node.next.val == node.next.next.val: |
There was a problem hiding this comment.
ここの比較でheadとダミーヘッドとの値の比較は行われていないので、今回ダミーヘッドの値は考慮しなくても良いかと思いました
ダミーヘッドは本当の head と値が重複しないように
-100 <= Node.val <= 100の外である必要がある。
valに-infが入っているとなにかしらに使われるのかなと思って読むので、dummy_headは以下のようにしてもよいかと思いましたが、特に今のままでも弊害はないはずです。好みかと思います。
dummy_head = ListNode(next=head)
There was a problem hiding this comment.
確かにそうですね、初めに書いたコードでは dummy_head から比較していたのを head からの比較に変えた時にそこまで意識が回っていませんでした。
valに-infが入っているとなにかしらに使われるのかなと思って読むので
特殊な値を使う時は意図を持って(= 不要なら無闇に使わない)というのは一つの指針になりそうです。
ありがとうございます。
|
|
||
| 本体の方で、while のあとに if が来て処理が長い→else は短い処理なので、if の判定を入れ替えた方がいいかも。↑のコメントも T と F が入れ替わる形で。 | ||
|
|
||
| 変数名に略語を使うかどうかは流派によるだろうが、今回は関数名にも duplicate があるのでdup_val でもわかりそうと思いつつ、エディタが補完してくれるので略さずに書けというのもわかる。 |
There was a problem hiding this comment.
ある程度の規模の組織になると、ソースコードを書く量より読む量のほうが増えます。このとき、書くより読むのにかかるコストを下げたほうが、全体としてのコストが低くなります。読むにあたり、略語が使われていると、認知負荷が上がる場合があります。これを避けるため、フルスペルで書いたほうが良いのだと思います。
Coding Agent にコードを読み書きさせる場合はよく分からないです。フルスペルのほうが略語より、 Coding Agent がより正確に意味を読み取ってくれる気がするのですが、気のせいかもしれません。
There was a problem hiding this comment.
ありがとうございます。
そのお話聞いて、略語で書いても認知不可が上がらないかどうかは判断も難しいですしいちいちそれを気にするくらいなら常にフルスペルで書いた方が書く時の負担も軽いかもしれないなとも思いました。
| dummy_head = ListNode(val=float("-inf"), next=head) | ||
| node = dummy_head | ||
| while node: | ||
| if node.next and node.next.next and node.next.val == node.next.next.val: |
There was a problem hiding this comment.
step1 のように node.next is not None と書いたほうが良いと思います。
こちらのコメントをご参照ください。
ksaito0629/leetcode_arai60#1 (comment)
There was a problem hiding this comment.
ありがとうございます。
別問題でも同じコメントいただいてましたがスタイルガイドの「True/False Evaluations」のところの意図は理解したのでそのスタイルで書いてみようと思います。
この問題:https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
次の問題:https://leetcode.com/problems/add-two-numbers/