From 31fe0faeda667edf4ffdaa15b37274891999ae5b Mon Sep 17 00:00:00 2001 From: quinqu Date: Thu, 10 Sep 2020 20:00:43 -0700 Subject: [PATCH 1/2] grouped anagrams --- lib/exercises.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/exercises.rb b/lib/exercises.rb index e1b3850..8be30de 100644 --- a/lib/exercises.rb +++ b/lib/exercises.rb @@ -1,11 +1,20 @@ # This method will return an array of arrays. # Each subarray will have strings which are anagrams of each other -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(m + n + nlog(n)) +# Space Complexity: O(n) def grouped_anagrams(strings) - raise NotImplementedError, "Method hasn't been implemented yet!" + grouped = {} + strings.each do |e| + current_sorted = e.split("").sort.join("") + if !grouped["#{current_sorted}"] + grouped["#{current_sorted}"] = [e] + else + grouped["#{current_sorted}"] << e + end + end + return grouped.values end # This method will return the k most common elements From 7d7861d48557d00329721a15c362cf3ea0b403ee Mon Sep 17 00:00:00 2001 From: quinqu Date: Sat, 12 Sep 2020 11:01:21 -0700 Subject: [PATCH 2/2] top k elements --- lib/exercises.rb | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/exercises.rb b/lib/exercises.rb index 8be30de..6909c18 100644 --- a/lib/exercises.rb +++ b/lib/exercises.rb @@ -19,10 +19,27 @@ def grouped_anagrams(strings) # This method will return the k most common elements # in the case of a tie it will select the first occuring element. -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n log(n)) +# Space Complexity: O(n) def top_k_frequent_elements(list, k) - raise NotImplementedError, "Method hasn't been implemented yet!" + if list.length == 0 + return [] + end + nums = {} + list.each do |num| + if !nums[num] + nums[num] = 1 + else + nums[num] += 1 + end + end + + sorted = nums.sort_by {|k, v| -v} + top_k = [] + k.times do |k| + top_k << sorted[k][0] + end + return top_k end @@ -36,3 +53,7 @@ def top_k_frequent_elements(list, k) def valid_sudoku(table) raise NotImplementedError, "Method hasn't been implemented yet!" end + + + + #if col + 1 % 3 == 0 && row + 1 % 3 == 0 -> check square \ No newline at end of file