From a51e9c2451ec63cef79f0d8708910a58f3bb23b6 Mon Sep 17 00:00:00 2001 From: fartem Date: Mon, 4 Nov 2024 12:13:13 +0300 Subject: [PATCH] 2024-11-04 v. 6.9.5: updated tests for "382. Linked List Random Node" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- lib/medium/382_linked_list_random_node.rb | 18 +++++++++++++++ .../test_382_linked_list_random_node.rb | 22 +++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 lib/medium/382_linked_list_random_node.rb create mode 100644 test/medium/test_382_linked_list_random_node.rb diff --git a/README.md b/README.md index 86ac4246..b13ff509 100644 --- a/README.md +++ b/README.md @@ -560,3 +560,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 377. Combination Sum IV | [Link](https://leetcode.com/problems/combination-sum-iv/) | [Link](./lib/medium/377_combination_sum_iv.rb) | [Link](./test/medium/test_377_combination_sum_iv.rb) | | 378. Kth Smallest Element in a Sorted Matrix | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/) | [Link](./lib/medium/378_kth_smallest_element_in_a_sorted_matrix.rb) | [Link](./test/medium/test_378_kth_smallest_element_in_a_sorted_matrix.rb) | | 380. Insert Delete GetRandom O(1) | [Link](https://leetcode.com/problems/insert-delete-getrandom-o1/) | [Link](./lib/medium/380_insert_delete_getrandom_o1.rb) | [Link](./test/medium/test_380_insert_delete_getrandom_o1.rb) | +| 382. Linked List Random Node | [Link](https://leetcode.com/problems/linked-list-random-node/) | [Link](./lib/medium/382_linked_list_random_node.rb) | [Link](./test/medium/test_382_linked_list_random_node.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index c2cc5f5b..ad4e78c1 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '6.9.4.1' + s.version = '6.9.5' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/382_linked_list_random_node.rb b/lib/medium/382_linked_list_random_node.rb new file mode 100644 index 00000000..b010fbda --- /dev/null +++ b/lib/medium/382_linked_list_random_node.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/linked-list-random-node/ +class Solution + # @param {ListNode} head + def initialize(head) + @nodes = [] + + until head.nil? + @nodes << head.val + + head = head.next + end + end + + # @return {Integer} + def get_random = @nodes[rand(@nodes.size)] +end diff --git a/test/medium/test_382_linked_list_random_node.rb b/test/medium/test_382_linked_list_random_node.rb new file mode 100644 index 00000000..551f4116 --- /dev/null +++ b/test/medium/test_382_linked_list_random_node.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/common/linked_list' +require_relative '../../lib/medium/382_linked_list_random_node' +require 'minitest/autorun' + +class LinkedListRandomNodeTest < ::Minitest::Test + def test_default_one + solution = ::Solution.new( + ::ListNode.from_array( + [1, 2, 3] + ) + ) + + assert([1, 2, 3].include?(solution.get_random)) + assert([1, 2, 3].include?(solution.get_random)) + assert([1, 2, 3].include?(solution.get_random)) + assert([1, 2, 3].include?(solution.get_random)) + assert([1, 2, 3].include?(solution.get_random)) + end +end