From df2f00365dca81a74f253335a8aef4e230d23353 Mon Sep 17 00:00:00 2001 From: fartem Date: Wed, 20 Nov 2024 09:02:11 +0300 Subject: [PATCH] 2024-11-20 v. 7.0.7: added "442. Find All Duplicates in an Array" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- .../442_find_all_duplicates_in_an_array.rb | 20 +++++++++++ ...est_442_find_all_duplicates_in_an_array.rb | 34 +++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 lib/medium/442_find_all_duplicates_in_an_array.rb create mode 100644 test/medium/test_442_find_all_duplicates_in_an_array.rb diff --git a/README.md b/README.md index c1c5d602..99615b39 100644 --- a/README.md +++ b/README.md @@ -572,3 +572,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 435. Non-overlapping Intervals | [Link](https://leetcode.com/problems/non-overlapping-intervals/) | [Link](./lib/medium/435_non_overlapping_intervals.rb) | [Link](./test/medium/test_435_non_overlapping_intervals.rb) | | 437. Path Sum III | [Link](https://leetcode.com/problems/path-sum-iii/) | [Link](./lib/medium/437_path_sum_iii.rb) | [Link](./test/medium/test_437_path_sum_iii.rb) | | 438. Find All Anagrams in a String | [Link](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | [Link](./lib/medium/438_find_all_anagrams_in_a_string.rb) | [Link](./test/medium/test_438_find_all_anagrams_in_a_string.rb) | +| 442. Find All Duplicates in an Array | [Link](https://leetcode.com/problems/find-all-duplicates-in-an-array/) | [Link](./lib/medium/442_find_all_duplicates_in_an_array.rb) | [Link](./test/medium/test_442_find_all_duplicates_in_an_array.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index fc55607b..6e77e22b 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 = '7.0.6' + s.version = '7.0.7' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/442_find_all_duplicates_in_an_array.rb b/lib/medium/442_find_all_duplicates_in_an_array.rb new file mode 100644 index 00000000..feae91d5 --- /dev/null +++ b/lib/medium/442_find_all_duplicates_in_an_array.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/find-all-duplicates-in-an-array/ +# @param {Integer[]} nums +# @return {Integer[]} +def find_duplicates(nums) + nums.sort! + result = [] + i = 0 + while i < nums.size + if nums[i] == nums[i + 1] + result << nums[i] + i += 1 + end + + i += 1 + end + + result +end diff --git a/test/medium/test_442_find_all_duplicates_in_an_array.rb b/test/medium/test_442_find_all_duplicates_in_an_array.rb new file mode 100644 index 00000000..45ef7f11 --- /dev/null +++ b/test/medium/test_442_find_all_duplicates_in_an_array.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/medium/442_find_all_duplicates_in_an_array' +require 'minitest/autorun' + +class FindAllDuplicatesInAnArrayTest < ::Minitest::Test + def test_default_one + assert_equal( + [2, 3], + find_duplicates( + [4, 3, 2, 7, 8, 2, 3, 1] + ) + ) + end + + def test_default_two + assert_equal( + [1], + find_duplicates( + [1, 1, 2] + ) + ) + end + + def test_default_three + assert_equal( + [], + find_duplicates( + [1] + ) + ) + end +end