news 2026/4/16 12:06:54

【剑斩OFFER】算法的暴力美学——计算右侧小于当前元素的个数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——计算右侧小于当前元素的个数

一、题目原理

二、算法原理

使用归并排序算法(降序)+ 绑定数组下标 来解决这道题:

当 nums[ begin1 ] > nums[ begin2 ] 时,end2 - begin2 + 1个数字小于nums[ begin1 ];例如 :7 > 4 ,那么 4 到 1 之间的数字都小于7;

因为在合并两个数组的时候会打乱各个数字的下标,根据题目要求我们是要在原数组的下标来判断每个数字的右边有多少个数字是小于当前数字的,所以我们要弄出两个数组来绑定下标:index1 和 index2 ,其中 index1 是保存原来数组的下标,而 index2 是保存合并数组后各个数字对应原来数组的下标,保证各个数字对应的下标不会乱,到时候再把 index2 里面的数字跟新到 index1 里面:

三、代码实现

class Solution { vector<int> tmp; vector<int> index1; vector<int> index2; vector<int> ret; public: vector<int> countSmaller(vector<int>& nums) { tmp.resize(nums.size()); index1.resize(nums.size()); ret.resize(nums.size()); index2.resize(nums.size()); for(int i = 0; i < nums.size();i++) index1[i] = i; Quicksort(0,nums.size()-1,nums,tmp); return ret; } void Quicksort(int l,int r,vector<int>& nums,vector<int>& tmp) { if(l >= r) return; int keyi = (r + l) >> 1; Quicksort(l,keyi,nums,tmp);//左边:【 l , keyi 】 Quicksort(keyi + 1,r,nums,tmp);//右边:【keyi + 1,r 】 int begin1 = l,end1 = keyi;//左边数组 int begin2 = keyi + 1,end2 = r;//右边数组 int index = l;//遍历起始点 while(begin1 <= end1 && begin2 <= end2)//比较遍历 { if(nums[begin1] > nums[begin2]) { ret[index1[begin1]] += end2 - begin2 + 1; index2[index] = index1[begin1];//绑定下标 tmp[index++] = nums[begin1++]; } else { index2[index] = index1[begin2]; tmp[index++] = nums[begin2++]; } } while(begin1 <= end1) { index2[index] = index1[begin1]; tmp[index++] = nums[begin1++];//把左边剩余的数字放到 tmp } while(begin2 <= end2) { index2[index] = index1[begin2]; tmp[index++] = nums[begin2++];//把右边剩余的数字放到 tmp } for(int i = l;i <= r;i++) { index1[i] = index2[i]; nums[i] = tmp[i];//把 tmp 里面的数字放回到原数组 nums } } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 21:42:44

14、Samba用户、安全与域配置全解析

Samba用户、安全与域配置全解析 1. 用户与组配置 在使用Samba服务器时,若使用Windows 98或NT 4.0 Workstation SP3连接,需先为服务器配置加密密码,否则客户端将拒绝连接。这是因为这些Windows客户端会发送加密密码,Samba需配置为能接收并解密。 1.1 单用户配置 为客户端…

作者头像 李华
网站建设 2026/4/16 12:07:17

华为OD机考双机位B卷 - 贪吃的猴子 (Java Python JS C/C++ GO )

最新华为上机考试 真题目录&#xff1a;点击查看目录 华为OD面试真题精选&#xff1a;点击立即查看 2025华为od机试双机位B卷 题目描述 只贪吃的猴子&#xff0c;来到一个果园&#xff0c;发现许多串香蕉排成一行&#xff0c;每串香蕉上有若干根香蕉。每串香蕉的根数由数组…

作者头像 李华
网站建设 2026/4/16 5:56:33

通达信正版庄见愁+海底活鱼

{}KS13:(C-SMA(C,13,1))/SMA(C,13,1)*(-100); {} AAA:REF(KS13,1)>13 AND REF(KS13,1)/KS13>1.23 AND C/REF(C,1)>1.03; 海底活鱼:IF(AAA AND REF(C,1)<COST(5),30,0),COLORWHITE,LINETHICK2; STICKLINE(庄筹线>散筹线,庄筹线,散筹线,0,0),COLORRED;

作者头像 李华
网站建设 2026/4/16 6:04:14

51的复位电路和时钟电路

对于模电数电没啥基础的人&#xff0c;电路一下真看不懂一、复位电路时间常数R*C10k*10u10*1000*0.1*0.001*0.0010.001s1ms1000us给RST引脚两个机器周期以上的高电平&#xff0c;复位。对于12M晶振&#xff0c;机器周期是1us&#xff08;微秒&#xff09;&#xff0c;1000us远大…

作者头像 李华
网站建设 2026/4/16 6:02:01

医疗时序预测漏长程依赖后来补Transformer才稳住趋势

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 目录医疗数据科学&#xff1a;当Excel表格遇见听诊器 一、数据洪流里的"急诊室" 二、算法模型的"成长日记" 三、数据安全的"罗生门" 四、未来展望&#xff1a;当AI成为"全能医生&quo…

作者头像 李华
网站建设 2026/4/16 5:59:53

SSM小微企业ERP软件物料需求模块设计55ss9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表系统项目功能&#xff1a;bom管理,订单信息,库存管理,mps信息,mrp信息基于 SSM 的小微企业 ERP 软件物料需求模块设计与实现一、研究背景与意义1. 研究背景随着小微企业数字化转型加速&#xff0c;传统的物料管理方式&#xff08;手工台账、Excel 记录&#xf…

作者头像 李华