3527. Find the Most Common Response
Description
You are given a 2D string array responses
where each responses[i]
is an array of strings representing survey responses from the ith
day.
Return the most common response across all days after removing duplicate responses within each responses[i]
. If there is a tie, return the lexicographically smallest response.
Example 1:
Input: responses = [["good","ok","good","ok"],["ok","bad","good","ok","ok"],["good"],["bad"]]
Output: "good"
Explanation:
- After removing duplicates within each list,
responses = [["good", "ok"], ["ok", "bad", "good"], ["good"], ["bad"]]
. "good"
appears 3 times,"ok"
appears 2 times, and"bad"
appears 2 times.- Return
"good"
because it has the highest frequency.
Example 2:
Input: responses = [["good","ok","good"],["ok","bad"],["bad","notsure"],["great","good"]]
Output: "bad"
Explanation:
- After removing duplicates within each list we have
responses = [["good", "ok"], ["ok", "bad"], ["bad", "notsure"], ["great", "good"]]
. "bad"
,"good"
, and"ok"
each occur 2 times.- The output is
"bad"
because it is the lexicographically smallest amongst the words with the highest frequency.
Constraints:
1 <= responses.length <= 1000
1 <= responses[i].length <= 1000
1 <= responses[i][j].length <= 10
responses[i][j]
consists of only lowercase English letters
Solutions
Solution 1: Hash Table
We can use a hash table \(\textit{cnt}\) to count the occurrences of each response. For the responses of each day, we first remove duplicates, then add each response to the hash table and update its count.
Finally, we iterate through the hash table to find the response with the highest count. If there are multiple responses with the same count, we return the lexicographically smallest one.
The complexity is \(O(L)\), and the space complexity is \(O(L)\), where \(L\) is the total length of all responses.
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|