From 52f693375f4794c297f4478a3e830e8e48f5dd99 Mon Sep 17 00:00:00 2001 From: jtr109 Date: Tue, 11 Aug 2020 18:54:35 +0800 Subject: [PATCH 1/2] new package --- Cargo.lock | 4 ++++ Cargo.toml | 1 + README.md | 3 ++- implement_queue_using_stacks/Cargo.toml | 9 +++++++++ implement_queue_using_stacks/src/lib.rs | 7 +++++++ 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 implement_queue_using_stacks/Cargo.toml create mode 100644 implement_queue_using_stacks/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index a7f1b01..0a7927d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,6 +4,10 @@ name = "binary_tree_postorder_traversal" version = "0.1.0" +[[package]] +name = "implement_queue_using_stacks" +version = "0.1.0" + [[package]] name = "kth_largest" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index f2fb8c2..f480a08 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,5 @@ members = [ "three_sum", "binary_tree_postorder_traversal", "two_sum", + "implement_queue_using_stacks", ] diff --git a/README.md b/README.md index 4c1e204..388d22d 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,9 @@ Resolving problems of LeetCode in RustLang. * [1. Two Sum](./two_sum/src/lib.rs) * [7. Reverse Integer](./reverse_integer/src/lib.rs) * [15. 3 Sum](./three_sum/src/lib.rs) -* [215. Kth Largest Element in an Array](./kth_largest/src/lib.rs) * [145. Binary Tree Postorder Traversal](./binary_tree_postorder_traversal/src/lib.rs) +* [215. Kth Largest Element in an Array](./kth_largest/src/lib.rs) +* [232. Implement Queue using Stacks](./implement_queue_using_stacks/src/lib.rs) ## Document diff --git a/implement_queue_using_stacks/Cargo.toml b/implement_queue_using_stacks/Cargo.toml new file mode 100644 index 0000000..4b7fa00 --- /dev/null +++ b/implement_queue_using_stacks/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "implement_queue_using_stacks" +version = "0.1.0" +authors = ["Ryan Li "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/implement_queue_using_stacks/src/lib.rs b/implement_queue_using_stacks/src/lib.rs new file mode 100644 index 0000000..31e1bb2 --- /dev/null +++ b/implement_queue_using_stacks/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} From 9191e8840a0e9b38a2c9b998fd8dd6f54f3595d3 Mon Sep 17 00:00:00 2001 From: jtr109 Date: Tue, 11 Aug 2020 19:14:21 +0800 Subject: [PATCH 2/2] resolve the problem --- implement_queue_using_stacks/src/lib.rs | 51 ++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/implement_queue_using_stacks/src/lib.rs b/implement_queue_using_stacks/src/lib.rs index 31e1bb2..5309288 100644 --- a/implement_queue_using_stacks/src/lib.rs +++ b/implement_queue_using_stacks/src/lib.rs @@ -1,7 +1,54 @@ +/*! + * # 232. Implement Queue using Stacks + * + * * [Problem link](https://leetcode.com/problems/implement-queue-using-stacks/) + */ + +#![allow(dead_code)] + +struct MyQueue { + start: usize, + data: Vec, +} + +impl MyQueue { + fn new() -> Self { + MyQueue { + start: 0, + data: vec![], + } + } + + fn push(&mut self, x: i32) { + self.data.push(x); + } + + fn pop(&mut self) -> i32 { + let v = self.data[self.start]; + self.start += 1; + v + } + + fn peek(&self) -> i32 { + self.data[self.start] + } + + fn empty(&self) -> bool { + self.start == self.data.len() + } +} + #[cfg(test)] mod tests { + use super::*; + #[test] - fn it_works() { - assert_eq!(2 + 2, 4); + fn test_example() { + let mut queue = MyQueue::new(); + queue.push(1); + queue.push(2); + assert_eq!(queue.peek(), 1); + assert_eq!(queue.pop(), 1); + assert!(!queue.empty()); } }