17(April) Count Pairs in an Array
17. Count Pairs in an Array
The problem can be found at the following link: Question Link
Problem Description
Given an array arr of n integers, count all pairs (arr[i], arr[j]) in it such that i*arr[i] > j*arr[j] and 0 ≤ i < j < n. Note: 0-based Indexing is followed.
Example:
Input:
n = 4
arr[] = {8, 4, 2, 1}Output:
2Explanation: If we see the array after operations [0*8, 1*4, 2*2, 3*1] => [0, 4, 4, 3], pairs which hold the condition i*arr[i] > j*arr[j] are (4,1) and (2,1), so in total 2 pairs are available.
My Approach
Pairs Calculation:
Iterate through the array
arrand calculatei*arr[i]for each elementarr[i].Store the calculated values in a vector
v.
Sorting:
Create a copy vector
tempof vectorv.Sort the vector
tempin non-decreasing order.
Counting Pairs:
Iterate over the elements of the original array
arrin reverse order.For each element
v[i], find the count of elements greater thanv[i]in the sorted vectortempusing binary search.Subtract this count from the total size of
tempand add it to the answer.Remove the element
v[i]from the sorted vectortemp.
Return:
Return the final count as the answer.
Time and Auxiliary Space Complexity
Expected Time Complexity: O(n*log(n)), as it involves sorting the vector and binary search operations.
Expected Auxiliary Space Complexity: O(n), as we use additional space to store the calculated values in vectors.
Code (C++)
Contribution and Support
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Let’s make this learning journey more collaborative!
⭐ If you find this helpful, please give this repository a star! ⭐
📍Visitor Count
Last updated