LeetCode: How Many Numbers Are Smaller Than the Current Number
Question
Given the array nums, for each nums[i] find out how many numbers in the array are smaller than it. That is, for each nums[i] you have to count the number of valid j’s such that j != i and nums[j] < nums[i].
Return the answer in an array.
Solution #1
def smaller_numbers_than_current(nums)
dict = Hash.new(0)
j = 0
result = nums
nums = nums.sort.reverse
nums.each do |num|
dict[num] = 0
while j < nums.length - 1
dict[num] += 1 if nums[j + 1] && num > nums[j + 1]
j += 1
end
j = 0
end
result.map { |num| dict[num] }
end
Solution #2
def smaller_numbers_than_current(nums)
result = nums.dup
dict = Hash.new(0)
nums.sort!.map { |num| dict[num] = nums.index(num) }
result.map { |num| dict[num] }
end
Comments