【LeetCode刷题笔记】LeetCode 1365.有多少小于当前数字的数字

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
更多算法知识专栏:算法分析🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述
LeetCode题解专栏:【LeetCode刷题笔记】


题目链接

LeetCode 1365.有多少小于当前数字的数字

一、题目描述

给你一个数组 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]

三、题目分析

方法一:

对原数组进行排序后,每个元素的下标即为 有多少小于当前数字的数字,

使用数组从右到左(元素相同,左边的下标为结果)存储每个元素对应下标,返回结果。
image.png

四、代码实现(C++)

class Solution {
public:
//sort + hash
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> nums2 = nums;
        sort(nums2.begin(),nums2.end());
        int hash[101];
        for(int i=nums2.size()-1;i>=0;i--)
        {
            hash[nums2[i]] = i;
        }
        vector<int> res(nums.size(),0);
        for(int i=0;i<res.size();i++)
        {
            res[i] = hash[nums[i]];
        }
        return res;
    }
};

方法二:

计数排序:

将数组从大到小进行计数排序,小于当前数字的个数即为小于该数字的所有出现次数之和

image.png

代码实现(C++)

class Solution {
public:
//计数排序
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        int cnt[101] = {0};
        for(int i=0;i<nums.size();i++)
        {
            cnt[nums[i]]++;
        }
        for(int i=1;i<100;i++)
        {
            cnt[i] += cnt[i-1];
        }
        vector<int> res(nums.size(),0);
        for(int i=0;i<res.size();i++)
        {
            if(nums[i] == 0)
            {
                res[i] = 0;
            }
            else
            {
                res[i] = cnt[nums[i]-1];
            }
        }
        return res;
    }
};

在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!
如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

相关推荐

  1. Leetcode16-多少小于当前数字数字1365

    2024-04-13 03:56:01       39 阅读
  2. LeetCode 1365. 多少小于当前数字数字

    2024-04-13 03:56:01       20 阅读
  3. LeetCode小记 一、【数组

    2024-04-13 03:56:01       29 阅读
  4. Leetcode315:计算右侧小于当前元素个数

    2024-04-13 03:56:01       10 阅读
  5. LeetCode笔记数组

    2024-04-13 03:56:01       31 阅读
  6. LeetCode136 只出现一次数字

    2024-04-13 03:56:01       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-13 03:56:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-13 03:56:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-13 03:56:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-13 03:56:01       20 阅读

热门阅读

  1. 探究C++20协程(1)——C++协程概览

    2024-04-13 03:56:01       14 阅读
  2. 反转字符串

    2024-04-13 03:56:01       12 阅读
  3. Vue中$attrs的作用和使用方法

    2024-04-13 03:56:01       12 阅读
  4. linux下的常用压缩格式及压缩命令

    2024-04-13 03:56:01       16 阅读
  5. C++项目实战与经验分享

    2024-04-13 03:56:01       14 阅读
  6. 什么是H5应用加固?

    2024-04-13 03:56:01       16 阅读
  7. 【2024】将二进制的node_exporter包制作成rpm包

    2024-04-13 03:56:01       17 阅读
  8. 学习笔记-微服务基础(黑马程序员)

    2024-04-13 03:56:01       16 阅读
  9. ORACAL执行计划

    2024-04-13 03:56:01       11 阅读
  10. 在vue3中使用pinia

    2024-04-13 03:56:01       13 阅读