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:
Given nums = [5, 2, 6, 1] 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.
Return the array [2, 1, 1, 0]
.
Subscribe to see which companies asked this question.
题解:要求创建一个新数列,对应每一个元素右边的元素中小于它的数的个数。作一个循环,从左往右依次选取一个元素与其右边的元素比较并对小于它的数计数。
- class Solution {
- public:
- vector<int> countSmaller(vector<int>& nums) {
- vector<int> counts(nums.size());
- for(int i=0; i<nums.size(); i++){
- int num=0;
- for(int j=i+1; j<nums.size(); j++){
- if( nums[j] < nums[i] ) num++;
- }
- counts[i]=num;
- }
- return counts;
- }
- };