0315. Count of Smaller Numbers After Self

https://leetcode.com/problems/count-of-smaller-numbers-after-self

Description

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

ac1: Merge sort

Amazing solution from https://leetcode.com/problems/count-of-smaller-numbers-after-self/discuss/445769/merge-sort-CLEAR-simple-EXPLANATION-with-EXAMPLES-O(n-lg-n). So easy to understand that not like a hard problem.

ac2: BST

This is not optimal, the worse case is still O(n^2), which is same as brute force.

ac3: BIT

Binary Indexed Tree, O(nlogn) time gurantee.

Last updated

Was this helpful?