不管全世界所有人怎么说,我都认为自己的感受才是正确的。无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢的怎么也长久不了。
LeetCode:原题地址
题目要求
给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。
示例 1:
输入:nums = [5,2,6,1]
输出:[2,1,1,0]
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素
示例 2:
输入: nums = [-1]
输出: [0]
示例 3:
输入: nums = [-1,-1]
输出: [0,0]
提示:
1 <= nums.length <= 105-104 <= nums[i] <= 104
思路
首先是要输出一数组,答案按索引值对应输入,counts[i]里存的是nums[i]>num[i++]的值的数量,所以这里用函数countNum来计算小于nums[i]的值的数量。
/**
* @param {number[]} nums
* @return {number[]}
*/
var countSmaller = function(nums) {
let counts = [];
for(let i=0;i<nums.length;i++){
let j = countNum(nums,i);//计算在该索引值下的值
counts.push(j);
}
return counts;
};
function countNum(nums,ind){
let j = 0;
for(let i=ind;i<nums.length;i++){
if(nums[ind]>nums[i]){//当num[i]>num[i++] 值+1
j++;
}
}
return j;//输出大于右边的值的数量
}