Skip to content

232. Implement Queue using Stacks#15

Merged
colorbox merged 2 commits intomainfrom
232
Nov 11, 2024
Merged

232. Implement Queue using Stacks#15
colorbox merged 2 commits intomainfrom
232

Conversation

@colorbox
Copy link
Copy Markdown
Owner

@oda
Copy link
Copy Markdown

oda commented Apr 24, 2024

お、ちょっと私の期待とは違うアルゴリズムでした。
これは関数型言語のデータ構造という背景がある問題に見えます。
https://www.slideshare.net/hamukazu/ss-10114639
https://www.cs.cmu.edu/~rwh/students/okasaki.pdf

Time: O(1)
Space: O(1)
*/
class MyQueue {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

自分が想定していたより時間計算量の悪いコードに感じました。

  • push() するときは push_stack に入れる
  • pop() するときは、
    • pop_stack が空でない場合は pop_stack から pop() する。
    • pop_stack が空の場合は、 push_stack から pop_stack にすべての要素を移動させたあと、 pop_stack から pop する。
  • peek() するときは、
    • pop_stack が空でない場合は pop_stack から peek() する。
    • pop_stack が空の場合は、 push_stack から pop_stack にすべての要素を移動させたあと、 pop_stack から peek する。

とすると、時間計算量がすべてならしで O(1) になると思います。この書き方でも書いてみていただけますか?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コメントありがとうございます。

解説を読んだのですが、誤解していました。
push時にpop_stackからpush_stackへの要素移動は不要ですね

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とすると、時間計算量がすべてならしで O(1) になると思います。この書き方でも書いてみていただけますか?

レビューありがとうございました 🙏
step4.cppとしてならしでO(1)となるコードを追記しました。
おてすきでレビューお願いします

@colorbox
Copy link
Copy Markdown
Owner Author

お、ちょっと私の期待とは違うアルゴリズムでした。

コメントありがとうございます。
解説の理解が不足しており、微妙に非効率なコードになってしまっていました。

これは関数型言語のデータ構造という背景がある問題に見えます。

資料ありがとうございます、時間を見て読んでみます。

Copy link
Copy Markdown

@nodchip nodchip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

よいと思います。

Repository owner deleted a comment Apr 27, 2024
@colorbox colorbox merged commit c6ded2d into main Nov 11, 2024
@colorbox colorbox deleted the 232 branch November 11, 2024 02:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants