[leetcode]問題解答と解説。225. Implement Stack using Queues [JavaScript]
皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます
私はある決意をして今臨んでいます。
モチベーションを保つためだけにこれをやっています。
では今日のleetCode。
「225. Implement Stack using Queues」の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。
※下にある自分のコードは自分で設けた制限時間内に書けたところまです。
これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。
225. Implement Stack using Queues ルール
ざっくり和訳
2 つのキューだけを使用して、先入れ先出し(LIFO)スタックを実装しなさい。実装されたスタックは、通常のスタックのすべての機能 (push, top, pop, empty) をサポートする必要があります。
MyStack クラスを実装してください。
void push(int x) 要素 x をスタックの最上部にプッシュする。
int pop() スタックの一番上にある要素を取り除き、それを返す。
int top() スタックの一番上にある要素を返します。
boolean empty() スタックが空であれば真を、そうでなければ偽を返す。
注意事項
つまり、push to back、peek/pop from front、size および is empty の操作のみが有効である。
言語によっては、キューはネイティブにサポートされていないかもしれません。キューの標準的な操作のみを使用する限り、リストやdeque(ダブルエンド型キュー)を使用してキューをシミュレートすることができます。
Example 1:
Input
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
Output
[null, null, null, 2, 2, false]
Explanation
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return False
225. Implement Stack using Queues 問題ページ
225. Implement Stack using Queues
225. Implement Stack using Queues
my code is ok
class MyStack {
stack
constructor() {
this.stack = []
}
push(x) {
this.stack.push(x)
}
pop() {
return this.stack.pop()
}
top() {
return this.stack[this.stack.length -1]
}
empty() {
return this.stack.length === 0
}
}
これは一発合格
225. Implement Stack using Queues。discussの中の一つの解答例
数ある中からJavaScriptのもので、理解しやすい解説をピックアップしました。
discussから見ればさらにもっと違う方法で真似したくなるものがあるかもしれないですね
JavaScriptでfilterされている、discussはこちらから
これが違う実装
225. Implement Stack using Queues
1
class MyQueue {
queue;
constructor() {
this.queue = []
}
push(n: number) {
this.queue.push(n)
}
peek(): (number | null) {
return this.queue[0]
}
pop() {
let r = this.peek();
this.queue.shift()
return r;
}
size() {
return this.queue.length
}
isEmpth() {
return this.queue.length == 0
}
}
class MyStack {
public Q;
constructor() {
this.Q = new MyQueue()
}
push(x: number): void {
let l = this.Q.queue.length;
this.Q.push(x)
for(let i = 1; i <= l; i++) {
let r = this.Q.pop();
this.Q.push(r)
}
}
pop(): number {
return this.Q.pop()
}
top(): number {
return this.Q.peek()
}
empty(): boolean {
return this.Q.queue.length == 0
}
}
/**
* Your MyStack object will be instantiated and called as such:
* var obj = new MyStack()
* obj.push(x)
* var param_2 = obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.empty()
*/
225. Implement Stack using Queuesをやってみて感想
- WIP