Skip to content

Commit c7c945d

Browse files
committed
2025-02-28 v. 8.7.6: added "1670. Design Front Middle Back Queue"
1 parent 80c9e3f commit c7c945d

File tree

4 files changed

+71
-1
lines changed

4 files changed

+71
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
709709
| 1630. Arithmetic Subarrays | [Link](https://leetcode.com/problems/arithmetic-subarrays/) | [Link](./lib/medium/1630_arithmetic_subarrays.rb) | [Link](./test/medium/test_1630_arithmetic_subarrays.rb) |
710710
| 1641. Count Sorted Vowel Strings | [Link](https://leetcode.com/problems/count-sorted-vowel-strings/) | [Link](./lib/medium/1641_count_sorted_vowel_strings.rb) | [Link](./test/medium/test_1641_count_sorted_vowel_strings.rb) |
711711
| 1669. Merge In Between Linked Lists | [Link](https://leetcode.com/problems/merge-in-between-linked-lists/) | [Link](./lib/medium/1669_merge_in_between_linked_lists.rb) | [Link](./test/medium/test_1669_merge_in_between_linked_lists.rb) |
712+
| 1670. Design Front Middle Back Queue | [Link](https://leetcode.com/problems/design-front-middle-back-queue/) | [Link](./lib/medium/1670_design_front_middle_back_queue.rb) | [Link](./test/medium/test_1670_design_front_middle_back_queue.rb) |
712713
| 2116. Check if a Parentheses String Can Be Valid | [Link](https://leetcode.com/problems/check-if-a-parentheses-string-can-be-valid/) | [Link](./lib/medium/2116_check_if_a_parentheses_string_can_be_valid.rb) | [Link](./test/medium/test_2116_check_if_a_parentheses_string_can_be_valid.rb) |
713714
| 2425. Bitwise XOR of All Pairings | [Link](https://leetcode.com/problems/bitwise-xor-of-all-pairings/) | [Link](./lib/medium/2425_bitwise_xor_of_all_pairings.rb) | [Link](./test/medium/test_2425_bitwise_xor_of_all_pairings.rb) |
714715
| 2429. Minimize XOR | [Link](https://leetcode.com/problems/minimize-xor/) | [Link](./lib/medium/2429_minimize_xor.rb) | [Link](./test/medium/test_2429_minimize_xor.rb) |

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '8.7.5'
8+
s.version = '8.7.6'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/design-front-middle-back-queue/
4+
class FrontMiddleBackQueue
5+
# Init
6+
def initialize
7+
@list = []
8+
end
9+
10+
# @param {Integer} val
11+
# @return {Void}
12+
def push_front(val)
13+
@list.unshift(val)
14+
end
15+
16+
# @param {Integer} val
17+
# @return {Void}
18+
def push_middle(val)
19+
@list.insert(@list.size / 2, val)
20+
end
21+
22+
# @param {Integer} val
23+
# @return {Void}
24+
def push_back(val)
25+
@list << val
26+
end
27+
28+
# @return {Integer}
29+
def pop_front
30+
@list.empty? ? -1 : @list.shift
31+
end
32+
33+
# @return {Integer}
34+
def pop_middle
35+
size = @list.size
36+
37+
return -1 if size.zero?
38+
39+
index = size.even? ? size / 2 - 1 : size / 2
40+
41+
@list.delete_at(index)
42+
end
43+
44+
# @return {Integer}
45+
def pop_back
46+
@list.empty? ? -1 : @list.pop
47+
end
48+
end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/1670_design_front_middle_back_queue'
5+
require 'minitest/autorun'
6+
7+
class DesignFrontMiddleBackQueueTest < ::Minitest::Test
8+
def test_default_one
9+
front_middle_back_queue = ::FrontMiddleBackQueue.new
10+
front_middle_back_queue.push_front(1)
11+
front_middle_back_queue.push_back(2)
12+
front_middle_back_queue.push_middle(3)
13+
front_middle_back_queue.push_middle(4)
14+
15+
assert_equal(1, front_middle_back_queue.pop_front)
16+
assert_equal(3, front_middle_back_queue.pop_middle)
17+
assert_equal(4, front_middle_back_queue.pop_middle)
18+
assert_equal(2, front_middle_back_queue.pop_back)
19+
assert_equal(-1, front_middle_back_queue.pop_front)
20+
end
21+
end

0 commit comments

Comments
 (0)