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

news2025/3/9 23:01:44

2023.9.2

        本题直观的解法就是双层for循环暴力求解:

暴力解:

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> ans;
        for(int i=0; i<nums.size(); i++)
        {
            int temp = 0;//比当前元素小的元素个数
            for(int j=0; j<nums.size(); j++)
            {
                if(nums[j] < nums[i]) temp++;
            }
            ans.push_back(temp);
        }
        return ans;
    }
};

         上述解法中,元素之间进行了重复比较,可以进行优化:

暴力解(优化版):

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> ans(nums.size());
        for(int i=0; i<nums.size(); i++)
        {
            for(int j=i+1; j<nums.size(); j++)
            {
                if(nums[j] < nums[i]) ans[i]++;
                else if(nums[j] > nums[i]) ans[j]++;
            }
        }
        return ans;
    }
};

        由于题中nums[i]给的范围是0~100,因此还可以以空间换时间,进一步优化:

哈希法:

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> v(nums.begin(),nums.end());
        sort(v.begin(),v.end()); //排序之后,元素下标就是小于当前元素的个数
        int hash[101];

        for(int i=0; i<v.size(); i++)
        {
            if(i>0 && v[i]==v[i-1]) continue;
            hash[v[i]] = i;
        }

        for(int i=0; i<nums.size(); i++)
        {
            nums[i] = hash[nums[i]];
        }
        return nums;
    }
};

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

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

相关文章

如何确认linux的包管理器是yum还是apt,确认之后安装其他程序的时候就需要注意安装命令

打开终端 输入apt&#xff0c;下图中提示未找到命令&#xff0c;则基本上包管理工具就是用yum的 输入yum&#xff0c;我们看到有打印信息&#xff0c;则说明包管理工具是yum的&#xff0c;离线安装命令使用rpm

kafka详解二

kafka详解二 1、 offset 1.1 offset介绍 老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的&#xff0c;它会自动或手动地将位移数据提交到 ZooKeeper 中保存。当 Consumer 重启后&#xff0c;它能自动从 ZooKeeper 中读取位移数据&#xff0c;从而在上次消费截止的地…

中国地方ZF数据开放指数(省域指数、城市指数)

“中国开放数林指数”是我国首个专注于评估政府数据开放水平的专业指数&#xff0c;由复旦大学数字与移动治理实验室制作出品。开放数据&#xff0c;蔚然成林&#xff0c; “开放数林”意喻我国政府数据开放利用的生态体系&#xff0c;一棵棵地方开放“数木”由最初的丛然并生、…

postgres源码解析54 Brin Index--1

Brin Index简介 brin index是Block range Index的缩写&#xff0c;顾名思义该索引是指块范围索引&#xff0c;该索引适合在超大表中进行过滤性扫描。基本的思路是追踪heap页域的最大值与最小值&#xff0c;用于过滤不符合条件的数据块。以下图为例&#xff0c;右边的堆表包含三…

ARM编程模型-寄存器组

Cortex A系列ARM处理器共有40个32位寄存器,其中33个为通用寄存器,7个为状态寄存器。usr模式和sys模式共用同一组寄存器。 通用寄存器包括R0~R15,可以分为3类: 未分组寄存器R0~R7分组寄存器R8~R14、R13(SP) 、R14(LR)程序计数器PC(R15)、R8_fiq-R12_fir为快中断独有 在不同模…

VITIS编译启动文件

source /home/wj/xilinx/PetaLinux/2021.1/tool/settings.sh source /home/wj/xilinx/Vitis/2021.1/settings64.sh source /home/wj/xilinx/Vivado/2021.1/settings64.sh 0 层 eng/home/wj/ETHERCAT_DW/meta-adi/meta-adi-core 1 层 /home/wj/ETHERCAT_DW/meta-adi/meta-ad…

【算法竞赛宝典】插入排序

【算法竞赛宝典】插入排序 题目描述伪代码代码展示代码讲解 题目描述 伪代码 代码展示 //插入排序数,请自己根据例程修改 #include <iostream>using namespace std;int main() {int a[11] {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};int temp1, temp2, number, end, i, j…

go学习part20(3)反射细节

1.Set函数的细节 错误示范 正确示范:传指针再调用Elem() 2.反射的高级用法 1&#xff09;方法调用&#xff08;传参和返回值都是Value&#xff09; 方法顺序i是按照方法名字的顺序来计算&#xff0c;比较ascii码 2)结构体字段数 3)value.Field&#xff08;i&#xff09;获取…

MPI之虚拟进程拓扑

什么是虚拟进程拓扑 在很多并行应用进程中&#xff0c;进程的线性排列不能充分的反映进程间在逻辑上的通信模型&#xff0c;通常由问题几何和所用的算法决定&#xff0c;进程经常被排列成二维或者三维网络形式的拓扑模型而通常用一个图来描述逻辑进程排列&#xff0c;此种逻辑…

百度搜索清理大量低质量网站

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 据部分站长爆料&#xff1a;百度大规模删低质量网站的百度资源站长平台权限&#xff0c;很多网站都被删除了百度站长资源平台后台权限&#xff0c;以前在百度后台添加的网站大量被删除&#xff01;…

在Mac上安装及使用 dubbo-go

目录 dubbo-go 是什么dubbo-go 快速入门环境安装&#xff08;Mac 系统&#xff09;安装 Go语言环境安装 序列化工具protoc安装 dubbogo-cli 以及相关插件解决报错&#xff1a;zsh: command not found: protoc-gen-go&#xff0c;而其他两个工具都能正常输出版本号信息。 完成依…

[贪心] 拼接最小数

这道题思路并不难&#xff0c;我主要想学习其一些对于字符串的处理。 代码如下&#xff1a; #include <iostream> #include <string> #include <algorithm> using namespace std;const int MAXN 10000; string nums[MAXN];bool cmp(string a, string b) {…

Java当中的object介绍以及相关方法介绍

文章目录 前言 1. object介绍 1.1 简单介绍 1.2 object的相关方法 2. object相关方法的介绍 2.0 JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别 2.1 Object之wait 2.1.1 另外两种wait方法 2.1.2 Object中notify&#xff0c;notify…

STM32f103入门(8)TIM输入捕获输入捕获测频率PWMI测占空比

TIM输入捕获 频率测量输入捕获基本结构PWMI基本结构主从触发模式输入捕获测量频率PWMI测占空比 频率测量 输入捕获基本结构 CNT计数一个周期&#xff0c;转运到CCR1里面去&#xff0c;CNT0 这时候CCR1N FxFc/N Fc cnt的驱动时钟 这时候就可以得到频率 Fc72M/PSC PWMI基本结构 …

STM32微控制器的低功耗模式

STM32微控制器的低功耗模式(Low-power modes):Sleep mode、Stop mode 和 Standby mode。 1.1 Sleep Mode(睡眠模式): 把STM32微控制器当作一位劳累的工人,他在工作过程中需要短暂的休息。在Sleep模式下,微控制器会关闭一部分电路,减小功耗,但仍然保持对中央处理单…

【Spring Boot】通过AOP拦截Spring Boot日志并将其存入数据库

文章目录 前言摘要AOP介绍AOP的实现添加依赖配置数据库连接定义日志实体类定义日志拦截器使用AOP拦截日志并保存到数据库中 代码方法介绍测试用例全文小结 前言 在软件开发中&#xff0c;常常需要记录系统运行时的日志。日志记录有助于排查系统问题、优化系统性能、监控操作行…

滑动窗口和双指针

滑动窗口和双指针 一、循环不变量1.1 定义1.2 总结 二、使用循环不变量写对代码2.1 注意2.2 总结 三、滑动窗口3.1 固定长度的滑动窗口&#xff08;同向交替移动的两个变量&#xff09;3.2 不定长度的滑动窗口3.2.1 定义3.2.2 总结 3.3 计数问题3.3.1 标准3.3.2 总结 3.4 使用数…

three.js(一)创建场景添加物体

目录 前言 一、创建Three世界 1.导入Three.js 2.引入three 3.创建基本结构 4.创建场景、相机、渲染器 场景 相机 渲染器 二、向场景中存放物体 1.创建一个物体 几何体 材质 网格模型 前言 官方网站https://threejs.org/网站目录翻译 文档连接https://threejs.org/…

postgresql-条件表达式

postgresql-条件表达式 简单Case表达式搜索Case表达式缩写函数总结 简单Case表达式 select e.first_name , e.last_name , e.department_id , case e.department_id when 90 then 管理when 60 then 开发else 其他end as "部门" from cps.public.employees e ;-- 统…

JavaWeb 文件上传和下载

目录 一、文件上传 1.文件上传和下载的使用说明 : 2.文件上传基本原理 : 3.文件上传经典案例 : 3.1 页面实现: 3.2 servlet实现 : 3.3 工具类实现 : 3.4 运行测试 : 3.5 注意事项 : 二、文件下载 1.文件下载基本原理 : 2.文件下载经典案例 : 2.1 准备工作 2.2 页面…