141. linked list cycle#1
Conversation
| fast = fast->next->next; | ||
| slow = slow->next; | ||
|
|
||
| if(fast == slow) return true; |
There was a problem hiding this comment.
前にぶら下がりについての議論があったので参考になるかもしれません
philip82148/leetcode-swejp#9 (comment)
https://discord.com/channels/1084280443945353267/1313503038358552607/1315031115014082600
There was a problem hiding this comment.
ありがとうございます.
ぶら下がり文という名前があることを今知りました.参考になります.
教えていただいた資料を読んで気づきましたが,style guide的に私の書き方はifの後にスペースがないからbadですね.気をつけることとします.
There was a problem hiding this comment.
2014年には、goto failバグというものが見つかっています。
括弧でくくっていれば、防げていたかもしれませんね。
https://qiita.com/tomohisaota/items/e6995e89b843e1295c08
https://www.sigbus.info/compilerbook 「コラム: インデントのエラーで生じたセキュリティバグ」
| # step1 | ||
| - 構造体・ポインタの知識がなかったので,[これ](https://atcoder.jp/contests/apg4b)で学習. | ||
| - その上でリストの成分からなるvectorを用意して,p.nextがこのvector内のどれかを指していたらtrue,指す前にp.nextがnullに到達したらfalseを出力という方針で書いてみる. | ||
| - が,うまくいかず20分ほど経ったので回答を見る.鬼ごっこでやるのか,と感動. |
There was a problem hiding this comment.
鬼ごっこの解き方よりもsetを用いた解き方のほうが重要なようです。
https://docs.google.com/document/d/11HV35ADPo9QxJOpJQ24FcZvtvioli770WWdZZDaLOfg/edit?tab=t.0#heading=h.2k4z0wt6ytf9
There was a problem hiding this comment.
ありがとうございます.
setを用いる方法は自然な発想で参考になります.
setでなくvectorを持ち出そうとした時点でデータ構造の基礎が抜けているようでした.
There was a problem hiding this comment.
set に含まれるかのチェックは C++ でさまざま用意されているようです。
There was a problem hiding this comment.
ありがとうございます.
containsはじめて知りました.勉強になります.
| # step1 | ||
| - 構造体・ポインタの知識がなかったので,[これ](https://atcoder.jp/contests/apg4b)で学習. | ||
| - その上でリストの成分からなるvectorを用意して,p.nextがこのvector内のどれかを指していたらtrue,指す前にp.nextがnullに到達したらfalseを出力という方針で書いてみる. | ||
| - が,うまくいかず20分ほど経ったので回答を見る.鬼ごっこでやるのか,と感動. |
There was a problem hiding this comment.
set に含まれるかのチェックは C++ でさまざま用意されているようです。
| } | ||
| return false; | ||
| } | ||
| }; |
There was a problem hiding this comment.
while や if の間にスペースを入れるとより良いと思います。
if (condition) { // Good - no spaces inside parentheses, space before brace.
There was a problem hiding this comment.
ありがとうございます.
ところで私は実務の経験がないのでこういった慣習に疎いです.可読性のためにもなるだけ早く当たり前のものにしておきたいのですが,プログラマーの方はスタイルガイドを通読して身につけるのでしょうか?あるいは書いていて指摘を受けては直していくといった感じでしょうか?
There was a problem hiding this comment.
他の方のコードを見たり、書き方を迷ったら規範や同僚の書き方を見て真似るなどを繰り返して身につけていくことなのかと思っています。講師陣の以下の見解が参考になります。
There was a problem hiding this comment.
逆にスタイルを守らないものの極致として IOCCC というコンテストがありますね。
https://www.ioccc.org/
あとは、これが C++ readability team にいた Omoikane さんのコードです。
https://uguu.org/sources.html
There was a problem hiding this comment.
2次イラストサイトが出てきたと思ってリンク間違えたかな?と思ったらまさかのコードによるAAとは...
面白いサイトたちをありがとうございます.
|
良いと思いました! |
| ListNode *fast = head; | ||
| ListNode *slow = head; | ||
|
|
||
| while(fast != nullptr && fast->next != nullptr){ |
There was a problem hiding this comment.
ポインターの nullptr チェックは != nullptr 書かない人もいますね。
| - 短いしいけるやろ,と思ったものの"!="を"=="と書いてしまいWA. | ||
| - その後3回Acceptedを出して終了 | ||
| - step2で他の人の回答を読むのを忘れていた. | ||
| - レビューは慣れてからで良かったみたい.とりあえずは読むことにしよう |
There was a problem hiding this comment.
There was a problem hiding this comment.
他人のコードやそれに対するレビューを読む習慣をつけていきます.
コメント集もstep3の前には読んでいきます.ありがとうございます..
問題:
https://leetcode.com/problems/linked-list-cycle/
次回:
https://leetcode.com/problems/linked-list-cycle-ii/description/