【LeetCode每日一题】——1365.有多少小于当前数字的数字

news2025/1/20 3:38:38

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 排序

二【题目难度】

  • 简单

三【题目编号】

  • 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]

六【题目提示】

  • 2 < = n u m s . l e n g t h < = 500 2 <= nums.length <= 500 2<=nums.length<=500
  • 0 < = n u m s [ i ] < = 100 0 <= nums[i] <= 100 0<=nums[i]<=100

七【解题思路】

  • 利用计数排序的思想来解决这道题目
  • 首先使用count数组来保存每个数字出现的次数
  • 然后再次使用count数组来计算小于当前数字和个数和当前数字个数的和
  • 对于第i个数字,count[i-1]的值就是小于第i个数字的数字个数
  • 需要注意要对数字0进行特殊处理,否则会出现负的索引下标,从而出错
  • 最后返回结果即可

八【时间频度】

  • 时间复杂度: O ( n + k ) O(n+k) O(n+k) n n n为传入的数组的长度, k k k为传入的数组的值域大小
  • 空间复杂度: O ( k ) O(k) O(k) k k k为传入的数组的值域大小

九【代码实现】

  1. Java语言版
class Solution {
    public int[] smallerNumbersThanCurrent(int[] nums) {
        int[] count = new int[101];
        int n = nums.length;
        for(int i = 0; i < n;i++){
            count[nums[i]]++;
        }
        for(int i = 1; i < 101;i++){
            count[i] += count[i - 1];
        }
        int[] res = new int[n];
        for(int i = 0;i < n;i++){
            res[i] = nums[i] == 0 ? 0 : count[nums[i] - 1];
        }
        return res;
    }
}
  1. C语言版
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize)
{
    int* count = (int*)calloc(101, sizeof(int));
    int n = numsSize;
    for(int i = 0;i < n;i++)
    {
        count[nums[i]]++;
    }
    for(int i = 1;i < 101;i++)
    {
        count[i] += count[i - 1];
    }
    int* res = (int*)calloc(n, sizeof(int));
    for(int i = 0;i < n;i++)
    {
        res[i] = nums[i] == 0 ? 0 : count[nums[i] - 1];
    }
    *returnSize = n;
    return res;
}
  1. Python语言版
class Solution:
    def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:
        n = len(nums)
        count = [0] * 101
        for i in range(0, n):
            count[nums[i]] += 1
        for i in range(1, 101):
            count[i] += count[i - 1]
        res = [0] * n
        for i in range(0, n):
            res[i] = 0 if nums[i] == 0 else count[nums[i] - 1]
        return res
  1. C++语言版
class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> count(101, 0);
        int n = nums.size();
        for(int i = 0;i < n;i++){
            count[nums[i]]++;
        } 
        for(int i = 1; i < 101;i++){
            count[i] += count[i - 1];
        }
        vector<int> res(n, 0);
        for(int i = 0;i < n;i++){
            res[i] = nums[i] == 0 ? 0 : count[nums[i] - 1];
        }
        return res;
    }
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

【c++】VC编译出的版本,发布版本如何使用

目录 使用release类型进行发布 应用程序无法正常启动 0xc000007b 版本对应 vcruntime140d 应用版本 参考文章 使用release类型进行发布 应用程序无法正常启动 0xc000007b "应用程序无法正常启动 0xc000007b" 错误通常是一个 Windows 应用程序错误&#xf…

手机拍摄的视频太大怎么压缩?快来学视频压缩

随着手机的普及和视频拍摄的简单化&#xff0c;我们经常会在手机上一不小心就拍摄出大量的视频内容。但这些视频文件往往会占用大量的存储空间&#xff0c;给我们的日常生活带来不便。那么&#xff0c;如何压缩这些过大的视频文件呢&#xff1f; 视频压缩的主要原理是利用视频序…

易云维®FMCS厂务系统创造工厂全新的“数字低碳智能”应用场景

近年来&#xff0c;新一代信息技术的高速发展为传统工业与制造业领域带来了新的机遇。信息技术加持下的制造技术发展出了新的生产方式、产业形态与管理模式。通过搭建FMCS厂务系统进行数字化转型来实现数据互联互通与业务高效协同&#xff0c;助力企业向安全、绿色、节能、高效…

软件测试全生命周期全流程解析

一、软件测试的基本概念 1.测试是软件生存周期中十分重要的一个过程&#xff0c;是产品发布、提交给最终用户前的稳定化阶段。 2.软件测试是为了发现错误而执行程序的过程。或者说&#xff0c;软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批 二、软…

winrar代码执行漏洞CVE-2023-38831复现

工具下载&#xff1a; winrar5.50&#xff1a;https://www.rarlab.com/rar/winrar-x64-550.exe 7-z&#xff1a;https://www.7-zip.org/ 创建文件夹目录如下 测试- image&#xff08;文件夹&#xff0c;此命名随意&#xff09;- xingkong.png&#xff08;一张图片&#xff0c…

【Unity3D赛车游戏】【七】如何在Unity中为汽车添加自动变速箱自动换挡?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

智能工单系统哪家好?如何提升企业维修效率与管理效能?

在互联网信息时代&#xff0c;许多行业已经完成了电子信息化的转变&#xff0c;并从中受益。对于公司而言&#xff0c;SaaS云产品系列提供了更低的成本、更强大的功能以及更好的客户体验。那么&#xff0c;与传统报修工单相比&#xff0c;智能工单有哪些优势呢&#xff1f; 首先…

9个至少提升50%效率的VSCODE插件

在开始编码之前&#xff0c;您首先需要让您的工作流程适合您。让它更高效、更漂亮、更可定制。它会节省您大量的时间和精力&#xff0c;因此您将有更多的能力进行编码。 无论您是前端还是后端开发人员还是高级 Java 程序员&#xff0c;都没关系。这篇文章对你们大多数人来说仍然…

问道管理:融资融券门槛?

融资融券是股票出资中的一种买卖方式&#xff0c;也是现代股市正常运作的重要机制之一。但是&#xff0c;由于融资融券具有利润高、危险大的特色&#xff0c;为了保护大多数出资者的利益&#xff0c;也为了确保股市的安稳运转&#xff0c;国家对融资融券的门槛做出了一系列规则…

一个国产存储一致性及稳定性测试工具介绍

项目地址&#xff1a;https://github.com/zhangyoujia/hd_write_verify 序言 hd_write_verify & hd_write_verify_dump 是测试磁盘稳定性和验证数据一致性的工具。可以测试 物理磁盘、虚拟机磁盘 等。相对于fio和vdbench等工具&#xff0c;此工具更加专注于数据对丢失、数…

lab9 fs

文章目录 Large filestaskhints思路 Symbolic linkstaskhints思路sys_symlinksys_open Large files 目标&#xff1a;11256256*256个block inode的格式在fs.h的struct dinode中被定义&#xff0c;你需要特别注意以下几点 NDIRECTNINDIRECTMAXFILEaddrs[] 在磁盘上找一个文件…

OpenGL手册

基础知识 图元类型 内置变量 GLSL 中文手册 基本类型: 类型说明void空类型,即不返回任何值bool布尔类型 true,falseint带符号的整数 signed integerfloat带符号的浮点数 floating scalarvec2, vec3, vec4n维浮点数向量 n-component floating point vectorbvec2, bvec3, b…

Midjourney学习(三)6个高级应用

使用Remix Mode在原图片的基础上进行二次创作 通过prompt得到大图之后&#xff0c;点击Make Variations按钮&#xff0c;输入Remix Prompt&#xff0c;即可得到意想不到的效果&#xff01; 局部内容重绘 通过局部重绘可以实现对画面内容更加精细化的控制&#xff0c;同样也是需…

【数学建模】清风数模正课7 多元线性回归模型

多元线性回归分析 回归分析就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;来解释Y的形成机制&#xff0c;从而达到通过X去预测Y的目的。 所以回归分析需要完成三个使命&#xff0c;首先是识别重要变量&#xff0c;其次是判断正负相关&#xff0c;最后是估计…

PCB电路板电压电流监测软件

PCB电路板电流监测软件详细设计说明书是一个详细描述软件系统设计和实现的文档&#xff0c;它提供了软件系统的架构、功能模块、接口设计、数据存储和处理、界面设计、数据库设计、系统测试、部署和维护计划等方面的详细信息。模拟量采集/老化房采集软件 该文档的目的是为了确保…

企业工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

百亿数据查询秒级响应,观测体系之日志中心该如何玩转?

日志是处理生产故障、性能优化、业务分析的重要参考依据&#xff0c;是系统稳定运行不可或缺的一部分。随着业务系统规模急剧膨胀增大&#xff0c;尤其是是微服务架构逐渐普及&#xff0c;一个系统可能涉及多个应用模块与服务实例&#xff0c;传统模式下运维人员去定位问题显得…

爬虫逆向实战(二十六)--某某学堂登录

一、数据接口分析 主页地址&#xff1a;某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现pass是加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无co…

ios开发 swift5 苹果系统自带的图标 SF Symbols

文章目录 1.官网app的下载和使用2.使用代码 1.官网app的下载和使用 苹果官网网址&#xff1a;SF Symbols 通过上面的网址可以下载dmg, 安装到自己的mac上 貌似下面这样不能展示出动画&#xff0c;还是要使用动画的代码 .bounce.up.byLayer2.使用代码 UIKit UIImage(system…