input: Write a function to find the most common elements in an array of integers. If there are multiple elements with the same highest frequency, return all of them. The given array may be empty, in which case return an empty list.
  def most_common(nums):
      # Create a dictionary to store the counts
      counts = {}
      
      # Iterate over the elements
      for num in nums:
          # If the element is not present in the dictionary, add it
          if num not in counts:
              counts[num] = 0
          
          # Update the count
          counts[num] += 1
      
      # Get the maximum count
      max_count = max(counts.values(), default=0)
      
      # Return the elements that have maximum count
      return [num for num, count in counts.items() if count == max_count]
  
  assert most_common([3, 4, 1, 2, 5, 3, 3])==[3]
  assert most_common([3, 4, 1, 2, 5, 3, 3, 1, 1, 4])==[3, 1, 4]
  assert most_common([23, 7, 15, 23, 18, 15])==[23, 15]
  assert most_common([])==[]
  assert most_common([5])==[5]
output: def most_common(nums):
      counts = {}
      for num in nums:
          if num not in counts:
              counts[num] = 0
          counts[num] += 1
      max_count = max(counts.values(), default=0)
      return [num for num, count in counts.items() if count == max_count]