diff --git a/DIRECTORY.md b/DIRECTORY.md index dbb7695..361854e 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -14,6 +14,7 @@ * [Get Products Of All Other Elements](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/get_products_of_all_other_elements.rb) * [Jewels And Stones](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/jewels_and_stones.rb) * [Remove Elements](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/remove_elements.rb) + * [Richest Customer Wealth](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/richest_customer.rb) * [Single Number](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/single_number.rb) * [Sort Squares Of An Array](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/sort_squares_of_an_array.rb) * [Two Sum](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/two_sum.rb) diff --git a/data_structures/arrays/richest_customer_wealth.rb b/data_structures/arrays/richest_customer_wealth.rb new file mode 100644 index 0000000..4efabeb --- /dev/null +++ b/data_structures/arrays/richest_customer_wealth.rb @@ -0,0 +1,56 @@ +# Challenge name: Richest Customer Wealth +# +# You are given an m x n integer grid accounts where accounts[i][j] +# is the amount of money the i​​​​​​​​​​​th​​​​ customer has in the j​​​​​​​​​​​th​​​​ bank. +# +# Return the wealth that the richest customer has. +# A customer's wealth is the amount of money they have in all +# their bank accounts. The richest customer is the customer that +# has the maximum wealth. +# +# Example 1: +# Input: accounts = [[1,2,3],[3,2,1]] +# Output: 6 +# Explanation: +# 1st customer has wealth = 1 + 2 + 3 = 6 +# 2nd customer has wealth = 3 + 2 + 1 = 6 +# Both customers are considered the richest with a wealth of 6 +# each, so return 6. +# +# Example 2: +# Input: accounts = [[1,5],[7,3],[3,5]] +# Output: 10 +# Explanation: +# 1st customer has wealth = 6 +# 2nd customer has wealth = 10 +# 3rd customer has wealth = 8 +# The 2nd customer is the richest with a wealth of 10. +# +# Example 3: +# Input: accounts = [[2,8,7],[7,1,3],[1,9,5]] +# Output: 17 + +# +# Approach: Brute Force +# +# Time Complexity: O(n) +# +def find_richest_customer_wealth(accounts) + summed_accounts = [] + accounts.each do |customer| + summed = 0 + customer.each do |account| + summed += account + end + summed_accounts.push(summed) + end + + summed_accounts.sort.pop() +end + +puts find_richest_customer_wealth([[1,2,3],[3,2,1]]) +# => 6 +puts find_richest_customer_wealth([[1,5],[7,3],[3,5]]) +# => 10 +puts find_richest_customer_wealth([[2,8,7],[7,1,3],[1,9,5]]) +# => 17 diff --git a/data_structures/hash_table/richest_customer_wealth.rb b/data_structures/hash_table/richest_customer_wealth.rb new file mode 100644 index 0000000..11849e1 --- /dev/null +++ b/data_structures/hash_table/richest_customer_wealth.rb @@ -0,0 +1,59 @@ +# Challenge name: Richest Customer Wealth +# +# You are given an m x n integer grid accounts where accounts[i][j] +# is the amount of money the i​​​​​​​​​​​th​​​​ customer has in the j​​​​​​​​​​​th​​​​ bank. +# +# Return the wealth that the richest customer has. +# A customer's wealth is the amount of money they have in all +# their bank accounts. The richest customer is the customer that +# has the maximum wealth. +# +# Example 1: +# Input: accounts = [[1,2,3],[3,2,1]] +# Output: 6 +# Explanation: +# 1st customer has wealth = 1 + 2 + 3 = 6 +# 2nd customer has wealth = 3 + 2 + 1 = 6 +# Both customers are considered the richest with a wealth of 6 +# each, so return 6. +# +# Example 2: +# Input: accounts = [[1,5],[7,3],[3,5]] +# Output: 10 +# Explanation: +# 1st customer has wealth = 6 +# 2nd customer has wealth = 10 +# 3rd customer has wealth = 8 +# The 2nd customer is the richest with a wealth of 10. +# +# Example 3: +# Input: accounts = [[2,8,7],[7,1,3],[1,9,5]] +# Output: 17 + +# +# Approach: Hash +# +# Time Complexity: O(n) +# +def find_richest_customer_wealth(accounts) + result_hash = {} + accounts.each_with_index do |customer, i| + result_hash[i] = customer.sum + end + + highest_value = 0 + result_hash.each do |k, v| + if v > highest_value + highest_value = v + end + end + + highest_value +end + +puts find_richest_customer_wealth([[1,2,3],[3,2,1]]) +# => 6 +puts find_richest_customer_wealth([[1,5],[7,3],[3,5]]) +# => 10 +puts find_richest_customer_wealth([[2,8,7],[7,1,3],[1,9,5]]) +# => 17