315. Count of Smaller Numbers After Self
Hard
You are given an integer array nums
and you have to return a new counts
array. The counts
array has the property where counts[i]
is the number of smaller elements to the right of nums[i]
.
Example 1:
Input: nums = [5,2,6,1]
Output: [2,1,1,0]
Explanation:
To the right of 5 there are 2 smaller elements (2 and 1).
To the right of 2 there is only 1 smaller element (1).
To the right of 6 there is 1 smaller element (1).
To the right of 1 there is 0 smaller element.
Example 2:
Input: nums = [-1]
Output: [0]
Example 3:
Input: nums = [-1,-1]
Output: [0,0]
Constraints:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
# Complexity : O(n^2)
# Here we are using a simple idea that when we insert element in sorted array index at which position element gets inserted will tell then number of elements which are greater or less than current number.
sorted_arr = []
result = []
for num in nums[::-1]:
index = bisect_left(sorted_arr, num)
result.append(index)
sorted_arr.insert(index, num)
return result[::-1]
Last updated