每日OJ题_分治归并③_力扣315. 计算右侧小于当前元素的个数

目录

315. 计算右侧小于当前元素的个数

解析代码


力扣315. 计算右侧小于当前元素的个数

315. 计算右侧小于当前元素的个数

难度 困难

给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。

示例 1:

输入:nums = [5,2,6,1]
输出:[2,1,1,0] 
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素

示例 2:

输入:nums = [-1]
输出:[0]

示例 3:

输入:nums = [-1,-1]
输出:[0,0]

提示:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4
class Solution {
public:vector<int> countSmaller(vector<int>& nums) {};

解析代码

class Solution {vector<int> ret;vector<int> index; // nums中元素的原始下标vector<int> tmp_nums;vector<int> tmp_index; // 和nums里的元素绑定一起移动
public:vector<int> countSmaller(vector<int>& nums) {int n = nums.size();ret.resize(n);index.resize(n);tmp_nums.resize(n);tmp_index.resize(n);for (int i = 0; i < n; ++i){index[i] = i;}mergeSortCnt(nums, 0, n - 1);return ret;}void mergeSortCnt(vector<int>& nums, int left, int right){if (left >= right)return;int mid = (left + right) >> 1;mergeSortCnt(nums, left, mid);mergeSortCnt(nums, mid + 1, right);int cur1 = left, cur2 = mid + 1, i = 0;while (cur1 <= mid && cur2 <= right){if (nums[cur1] > nums[cur2]){ret[index[cur1]] += (right - cur2 + 1);tmp_nums[i] = nums[cur1];tmp_index[i++] = index[cur1++];}else{tmp_nums[i] = nums[cur2];tmp_index[i++] = index[cur2++];}}while (cur1 <= mid){tmp_nums[i] = nums[cur1];tmp_index[i++] = index[cur1++];}while (cur2 <= right){tmp_nums[i] = nums[cur2];tmp_index[i++] = index[cur2++];}for (int j = left; j <= right; ++j){nums[j] = tmp_nums[j - left];index[j] = tmp_index[j - left];}}
};

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

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

相关文章

MongoDB 未授权访问

开启 MongoDB 服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库&#xff0c; 登录的 用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。 防护 为 MongoDB 添 加 认 证 &#xff1a; 1)MongoDB 启动时添加–auth参数 2)给 MongoD…

Java 读写 ini ( 调用 Windows Api )

市面上读取 ini 的包都是 读取整个文件到内存中,再获取和修改值, 最后自己再调用保存文件, 这种方式在读取大文件的时候 非常的不友好. windows api 中有现成的高效方法 安装 jna-platform (里面封装了各个系统的 api ,直接用就行. 不用再手动写固定的函数定义) jna-platfor…

JPA常见异常 JPA可能抛出的异常

1、EntityNotFoundException&#xff08;实体不存在异常&#xff09;: 通过 JPA 查找一个不存在的实体。 2、NonUniqueResultException&#xff08;非唯一结果异常&#xff09;&#xff1a; 查询返回了多个结果&#xff0c;但期望只有一个结果。 3、TransactionRequiredExcep…

AutoSAR(基础入门篇)13.1-EB Tresos使用初探

目录 一、新建工程 二、添加和删除模块 三、界面 四、代码生成 1、直接生成代码

Mac 以SH脚本安装Arthas

SH脚本安装Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安装脚本说明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…

微服务中的Feign:优雅实现远程调用的秘密武器(一)

本系列文章简介&#xff1a; 本系列文章将深入探讨Feign的特点、原理以及在微服务中的应用场景&#xff0c;帮助读者更好地理解和使用这个优秀的远程调用工具。无论您是初学者还是有经验的开发人员&#xff0c;本文都将为您揭示Feign的秘密&#xff0c;并带您一起走进微服务的世…

人类与机器的不同交流特点

对人类而言&#xff0c;事实是用来交流的&#xff0c;价值是用来自我交流的。事实是用来交流的&#xff0c;是通过提供准确、可证实的信息来传递和共享知识的。事实具有客观性&#xff0c;不受个人主观意见的影响。通过分享事实&#xff0c;人们可以更好地理解世界和彼此&#…

Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius,Kotlin

Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius&#xff0c;Kotlin 这里 Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高&#xff0c;Kotlin-CSDN博客 实现的是把原图中心区域的一片小图挖取出来放大放到下面的ImageView里面…

if语句用法

if语句是单条件分支语句 定义&#xff1a;根据一个条件来控制程序执行流程(如图3.2)。 语法格式&#xff1a; if&#xff08;表达式&#xff09;{ 若干语句 } ★注意★&#xff1a; ① 表达式的值必须是boolean 型&#xff1b; ② 不能用0代表false&#xff1b;用1代表 true&am…

德人合科技 | —数据泄露可能会对公司造成哪些影响?

数据泄露可能会对公司造成多方面的影响&#xff0c;以下是一些可能的影响&#xff1a; 财务损失&#xff1a;数据泄露可能导致公司遭受财务损失。攻击者可能会盗取公司的敏感信息&#xff0c;如客户信息、银行账户信息、商业机密等&#xff0c;并利用这些信息进行欺诈、盗窃等非…

「优选算法刷题」:验证栈序列

一、题目 给定 pushed 和 popped 两个序列&#xff0c;每个序列中的 值都不重复&#xff0c;只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时&#xff0c;返回 true&#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…

本地maven库缓存导入私库

为了加速编译代码&#xff0c;想将本地maven缓存导入内网私库使用。 脚本网上搜的 #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name …

高效备考2024年AMC10:吃透2000-2023年1250道AMC10真题

距离2024年AMC10的比赛只有8个月多一点的时间了&#xff0c;如何备考AMC10美国数学竞赛最有效&#xff1f;参加AMC10竞赛是否一定要参加机构的培训班&#xff1f;吃透历年真题是有效的自学、了解AMC10和备考策略之一。事实上&#xff0c;网络上有很多关于AMC10的学习资源&#…

Github 2024-03-02 开源项目日报Top9

根据Github Trendings的统计&#xff0c;今日(2024-03-02统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量非开发语言项目2Rust项目1JavaScript项目1Shell项目1C项目1TypeScript项目1C#项目1Python项目1 任天堂Switch模…

InnoDB备份与恢复篇(4)-InnoDB的故障恢复与日志分析

在MySQL数据库中&#xff0c;InnoDB是一种非常常用的存储引擎。它提供了高性能和可靠性&#xff0c;同时也具备故障恢复和日志分析的能力。本文将介绍InnoDB的故障恢复机制和日志分析方法。 一、故障恢复机制 事务和写日志&#xff1a; 在InnoDB中&#xff0c;所有的数据操作都…

NIST网络安全框架2.0版发布:十年磨一剑,安全再升级

美国国家标准与技术研究院(NIST)近日发布了网络安全框架(CSF)的2.0正式版本&#xff0c;这是2014年该框架发布后十年来首次重大更新。新框架版本极大扩展了适用范围&#xff0c;重点关注治理和供应链问题&#xff0c;并提供了丰富的资源以加速框架实施。 NIST正式发布的网络安全…

决定西弗吉尼亚州地区版图的关键历史事件

决定西弗吉尼亚州地区版图的关键历史事件&#xff1a; 1. 内部分裂与美国内战&#xff1a; - 在1861年美国内战爆发时&#xff0c;弗吉尼亚州作为南方邦联的一员宣布退出美利坚合众国。然而&#xff0c;弗吉尼亚州西部的一些县由于经济结构&#xff08;主要是农业非依赖奴隶制…

使用Python进行Sentinel-2 图像聚类

聚类或无监督分类是根据统计相似性将图像的像素值分组或聚合到一定数量的自然类(组)的过程。在本教程中,我们将使用rasterio进行sentinel-2图像处理,并使用功能强大的完整scikit-learn python 包在jupyter Notebook中进行聚类。 Scikit-learn是一个用于 Python 编程语言的…

Redis 存储原理和数据模型

redis 是不是单线程 redis 单线程指的是命令处理在一个单线程中。主线程 redis-server&#xff1a;命令处理、网络事件的监听。 辅助线程 bio_close_file&#xff1a;异步关闭大文件。bio_aof_fsync&#xff1a;异步 aof 刷盘。bio_lazy_free&#xff1a;异步清理大块内存。io_…

一种基于三角剖分划分白区范围的白平衡算法

常规的白平衡算法中,一般会通过标准色温的R/G-B/G建议色温坐标系,然后在该坐标系中设定白区范围,对落入到白区范围的R/G/B进行加权统计处理,输出给到软件进行白平衡的增益计算。 所介绍的这篇专利利用三角剖分的算法,在划定的白区范围内,利用各个标准色温光源下所标定的白…