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

文章目录

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

一【题目类别】

  • 排序

二【题目难度】

  • 简单

三【题目编号】

  • 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] * 101for i in range(0, n):count[nums[i]] += 1for i in range(1, 101):count[i] += count[i - 1]res = [0] * nfor 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.hqwc.cn/news/94293.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android JNI系列详解之生成指定CPU的库文件

一、前提 这次主要了解Android的cpu架构类型&#xff0c;以及在使用CMake工具的时候&#xff0c;如何指定生成哪种类型的库文件。 如上图所示&#xff0c;是我们之前使用CMake工具默认生成的四种cpu架构的动态库文件&#xff1a;arm64-v8a、armeabi-v7a、x86、x86_64&#xff0…

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…

数据库-DML

DML&#xff1a;用来对数据库中表的数据记录进行增、删、改等操作。 添加数据&#xff08;INSERT&#xff09; insert语法&#xff1a; 指定字段添加数据&#xff1a;insert into 表单&#xff08;字段名1&#xff0c;字段名2&#xff09;values&#xff08;值1&#xff0c;值…

【C++】C++11新特性(下)

上篇文章&#xff08;C11的新特性&#xff08;上&#xff09;&#xff09;我们讲述了C11中的部分重要特性。本篇接着上篇文章进行讲解。本篇文章主要进行讲解&#xff1a;完美转发、新类的功能、可变参数模板、lambda 表达式、包装器。希望本篇文章会对你有所帮助。 文章目录 一…

Day5:react函数组件与类组件

「目标」: 持续输出&#xff01;每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 「主要面向群体&#xff1a;」前端开发工程师&#xff08;初、中、高级&#xff09;、应届、转行、培训、自学等同学 Day4-今日话题 react「函数组件和类组件」的区别&…

一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)

一、目的 在实际项目中&#xff0c;从Kafka到HDFS的数据是每天自动生成一个文件&#xff0c;按日期区分。而且Kafka在不断生产数据&#xff0c;因此看看kettle是不是需要时刻运行&#xff1f;能不能按照每日自动生成数据文件&#xff1f; 为了测试实际项目中的海豚定时调度从…

JVM调优指令参数

常用命令查找文档站点&#xff1a;https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值&#xff0c;默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

Vulnhub: Ragnar Lothbrok: 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.226 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.226 作者提示修改hosts文件 目录爆破 gobuster dir -u http://armbjorn -w /usr/share/wordlists/dirbuster/directory-l…

中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流

公司简介 Salla 是一家 2016 年成立&#xff0c;位于沙特麦加的自建站电商平台。 作为中东 Shopify&#xff0c;其最大的特点是支持阿拉伯语建站&#xff0c;并且提供更多适应中东地区特点的本地化服务。截止目前&#xff0c;已有 47,000 家店铺入驻 Salla&#xff0c;商品销售…

C++算法 —— 分治(2)归并

文章目录 1、排序数组2、数组中的逆序对3、计算右侧小于当前元素的个数4、翻转对 1、排序数组 排序数组 排序数组也可以用归并排序来做。 vector<int> tmp;//写成全局是因为如果在每一次小的排序中都创建一次&#xff0c;更消耗时间和空间&#xff0c;设置成全局的就更高…

设计模式-原型模式详解

文章目录 前言理论基础1. 原型模式定义2. 原型模式角色3. 原型模式工作过程4. 原型模式的优缺点 实战应用1. 原型模式适用场景2. 原型模式实现步骤3. 原型模式与单例模式的区别 原型模式的变体1. 带有原型管理器的原型模式2. 懒汉式单例模式的原型模式实现3. 细粒度原型模式 总…

网络渗透day6-面试01

&#x1f609; 和渗透测试相关的面试问题。 介绍 如果您想自学网络渗透&#xff0c;有许多在线平台和资源可以帮助您获得相关的知识和技能。以下是一些受欢迎的自学网络渗透的平台和资源&#xff1a; Hack The Box: Hack The Box&#xff08;HTB&#xff09;是一个受欢迎的平…