Conversation
| ListNode node = head; | ||
| ListNode reversedHead = null; | ||
| while(node != null) { | ||
| ListNode next = node.next; |
There was a problem hiding this comment.
普段Rubyだとnextが予約語なのでギョッとしましたがJavaなので特に問題なさそうですね。
読みやすいです。
There was a problem hiding this comment.
JavaでいうcontinueをRubyではnextと書くんですね。知らなかったです。
Ruby話者などをギョッとさせる可能性があることを心に留めておきます。
There was a problem hiding this comment.
Pythonでも予約語ではないですがnextという組込み関数がありますね。
他言語で使われる名前はどこまで気にすべきかはちょっと分からないですが、ご参考まで。
| class Solution { | ||
| public ListNode reverseList(ListNode head) { | ||
| return reverseListHelper(head); | ||
| } | ||
|
|
||
| private ListNode reverseListHelper(ListNode node) { | ||
| if (node == null || node.next == null) { | ||
| return node; | ||
| } | ||
| ListNode headReversed = reverseListHelper(node.next); | ||
| ListNode tailReversed = node.next; | ||
| tailReversed.next = node; | ||
| node.next = null; | ||
| return headReversed; | ||
| } | ||
| } |
There was a problem hiding this comment.
好みの問題かもしれませんが、先にheadがnullの場合を返しておけば再帰の条件が減らせますね。
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null) return head;
return reverseListHelper(head);
}
private ListNode reverseListHelper(ListNode node) {
if (node.next == null) return node;
ListNode headReversed = reverseListHelper(node.next);
ListNode tailReversed = node.next;
tailReversed.next = node;
node.next = null;
return headReversed;
}
}There was a problem hiding this comment.
確かにそちらの方が自然な気がします。ありがとうございます!
| } | ||
| ``` | ||
|
|
||
| # step2 他の方の解答を見る |
There was a problem hiding this comment.
変数名の修正などされていて良いと思います。
網羅的にしすぎると何時間も掛かってしまう(キリがない)ドツボにハマると思うので、要点など整理して主要な内容をreferenceと共にstep2にまとめるのがいいと思いました。
*私はドツボにハマりしばらくかけてないです。
There was a problem hiding this comment.
あ、これ、理事の一人は60問を6時間かからずに解き切ったそうです。
これは平均よりも速いとは思いますが、最終的にはそれくらいのオーダー感覚になるものです。
100%絞り出そうとせずに次に行くのも大事です。
要はですね、大人ならば5分くらいで書けるメールを、状況に合わせて60通書いてみようくらいの話なのですね。
日本語ネイティブだが、日本で義務教育を受けておらず文字やタイピングに慣れていないという人がいると、それが1時間以上かかるわけです。
同じようなメールを書く必要になったときに「何も見ずに5分程度で頭から尻尾まで書いて、軽く見直しをし、社会人として恥ずかしくない程度ができあがる」能力がつけばゴールであり、60通書き終わった時点でそうなっていればいいわけです。ここで、お悔やみのメール全パターンを列挙し分類しようとか始めると文化人類学の研究にはなるかもしれませんが目的が違いそうです。
There was a problem hiding this comment.
なんとなくこの回で選択肢の幅が見えてなかったことに気づいたように感じました。
気づいたからには網羅的と思い、しばし手が止まってしまいました。
1問1問完璧ではなくても進めていく中で見えていくものも多いかと思うので、こだわり過ぎず進めていこうと思います。
There was a problem hiding this comment.
要は(複数人の分業だとして)どこまでを誰の責任にするのか、どの順序で頼むか、という分け方の話なので無数にあるわけですが、切り分けるときにその違いに目がいくようになれば十分でしょう。
気に入ったものを書き写して、ここが特徴だったとかでもよさそうです。
There was a problem hiding this comment.
その辺りを意識して取り組んでみます。
ありがとうございます。
nanae772
left a comment
There was a problem hiding this comment.
お疲れ様です。いろんな解き方を丁寧に実装されていて読みやすかったです。
| - Stackを使って実装 | ||
| - Stackを使わなくても書けそうな気がするが、どうしてStackのセクションにあるのだろう。 | ||
| - 当初、末尾の要素のnextをnullにするのを忘れていた。 | ||
| - 最後の要素だけが問題になるので、ループ完了後に`newTail.next = null;`としているが、ループの中で上書きした方が読み手にとって自然だろうか。 |
There was a problem hiding this comment.
やっぱりループ完了後に上書きしていると唐突な印象を受けますよね。
コメントありがとうございます!
| ``` | ||
| - https://github.com/akmhmgc/arai60/pull/7/files | ||
| - 1ノードずつ逆順のLinked Listの先頭に繋いでいく | ||
| - 上の実装とやっていることはほぼ同じだが、すっきりした実装に |
| ListNode node = head; | ||
| ListNode reversedHead = null; | ||
| while(node != null) { | ||
| ListNode next = node.next; |
There was a problem hiding this comment.
Pythonでも予約語ではないですがnextという組込み関数がありますね。
他言語で使われる名前はどこまで気にすべきかはちょっと分からないですが、ご参考まで。
今回解いた問題:
206. Reverse Linked List
次に解く問題:
1. Two Sum
(Heap, PriorityQueueより馴染みのあるhashMap系を先に進める)