mirror of
https://github.com/TheAlgorithms/Ruby
synced 2025-01-14 08:01:05 +01:00
Add hash table approach
This commit is contained in:
parent
7b49aac8a7
commit
9fbd75fa66
1 changed files with 55 additions and 0 deletions
55
data_structures/arrays/arrays_intersection.rb
Normal file
55
data_structures/arrays/arrays_intersection.rb
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# Given three integer arrays arr1, arr2 and arr3 sorted in strictly increasing order, return a sorted array of only the integers that appeared in all three arrays.
|
||||||
|
#
|
||||||
|
# Example 1:
|
||||||
|
#
|
||||||
|
# Input: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8]
|
||||||
|
# Output: [1,5]
|
||||||
|
# Explanation: Only 1 and 5 appeared in the three arrays.
|
||||||
|
#
|
||||||
|
# Example 2:
|
||||||
|
#
|
||||||
|
# Input: arr1 = [197,418,523,876,1356], arr2 = [501,880,1593,1710,1870], arr3 = [521,682,1337,1395,1764]
|
||||||
|
# Output: []
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Approach: Hash table
|
||||||
|
#
|
||||||
|
|
||||||
|
# Complexity Analysis
|
||||||
|
|
||||||
|
# Time Complexity: O(n) - n is the total length of
|
||||||
|
# all of the input arrays.
|
||||||
|
# Space Complexity: O(n) - n is the total length of all of the
|
||||||
|
# input arrays. This is because we adopted a Hash table to store all
|
||||||
|
# numbers and their number of appearances as values.
|
||||||
|
|
||||||
|
def arrays_intersection(arr1, arr2, arr3)
|
||||||
|
hash = Hash.new(0)
|
||||||
|
|
||||||
|
add_to_hash(arr1, hash)
|
||||||
|
add_to_hash(arr2, hash)
|
||||||
|
add_to_hash(arr3, hash)
|
||||||
|
|
||||||
|
hash.select { |key, value| value == 3 }.keys
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_to_hash(arr, hash)
|
||||||
|
arr.each_with_index do |value, index|
|
||||||
|
hash[value] += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
arr1 = [1,2,3,4,5]
|
||||||
|
arr2 = [1,2,5,7,9]
|
||||||
|
arr3 = [1,3,4,5,8]
|
||||||
|
print arrays_intersection(arr1, arr2, arr3)
|
||||||
|
# Output: [1,5]
|
||||||
|
# Explanation: Only 1 and 5 appeared in the three arrays.
|
||||||
|
|
||||||
|
arr1 = [197,418,523,876,1356]
|
||||||
|
arr2 = [501,880,1593,1710,1870]
|
||||||
|
arr3 = [521,682,1337,1395,1764]
|
||||||
|
print arrays_intersection(arr1, arr2, arr3)
|
||||||
|
# Output: []
|
Loading…
Reference in a new issue