本文共 1346 字,大约阅读时间需要 4 分钟。
知识点:数组、排序
时间:2020年10月26日 题目链接:题目
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。
以数组形式返回答案。
示例 1:
输入: nums = [8,1,2,2,3] 输出: [4,0,1,1,3] 解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。 对于 nums[1]=1 不存在比它小的数字。 对于 nums[2]=2 存在一个比它小的数字:(1)。 对于 nums[3]=2 存在一个比它小的数字:(1)。 对于 nums[4]=3 存在三个比它小的数字:(1,2 和 2)。示例 2:
输入: nums = [6,5,4,8] 输出: [2,1,0,3]示例 3:
输入: nums = [7,7,7,7] 输出: [0,0,0,0]提示:
解法
代码
#include#include #include using namespace std;class Solution { public: vector smallerNumbersThanCurrent(vector & nums) { vector > tmp; vector ans(nums.size(),0); for(int i = 0;i < nums.size();i++) tmp.push_back(pair (nums[i],i)); sort(tmp.begin(), tmp.end()); int rank = -1; for(int i = 0;i < nums.size();i++){ if(i == 0 || tmp[i].first != tmp[i-1].first){ rank = i; } ans[tmp[i].second] = rank; } return ans; }};int main(){ vector nums{ 6,5,4,8,6}; Solution s; vector ans = s.smallerNumbersThanCurrent(nums); for(int x:ans) cout< <
今天也是爱zz的一天哦!
转载地址:http://mmdsn.baihongyu.com/