Difficulty: Easy
One of the most confusing descriptions I’ve seen in a while. After reading the question very very very carefully, we can see that there are only 3 cases to consider when comparing the smallest element in nums and k:
nums is smaller than k, it is not possible to make all values in the array equal to k as there are no operations that increase the value of elements in the array. Therefore, in this case, we return -1nums is greater than k, we would need to use 1 operation for each unique element in the list. Therefore, we would need to use len(unique) operations where unique is a list/set of unique elements in numsnums is equal to k, we have a similar case to case 2, except we don’t need to use an operation at the end (since k is equal to the smallest element in nums). Therefore, we would need to use len(unique) - 1 operations where unique is a list/set of unique elements in numsclass Solution(object):
def minOperations(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
unique = set(nums)
smallest = float('inf')
for num in unique:
smallest = min(smallest, num)
if smallest < k:
return -1
if smallest > k:
return len(unique)
return len(unique) - 1
Time Complexity:
O(n)Space Complexity:
O(n)Time Taken:
7m 45s