当前位置: 首页 > news >正文

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

一、题目描述

二、解题思路

采用归并排序的思路可以解决这个问题,本题思路与寻找逆序对的思路一致。

leetcode LCR 170.交易逆序对的总数-CSDN博客

由于需要记录每一个数字的对应下标,所以我们需要数组Index来对应记录,保证Index数组和nums数组同步变化,就可以不丢失每一个数组的真正下标。

三、代码实现

时间复杂度:T(n)=O(nlogn)

空间复杂度:S(n)=O(n)

class Solution {vector<int> ret;vector<int> Index;vector<int> Numstmp;vector<int> Indextmp;
public:vector<int> countSmaller(vector<int>& nums) {int n=nums.size();ret.resize(n,0);Index.resize(n,0);Numstmp.resize(n);Indextmp.resize(n);//Index用于记录对应数字的下标for(int i=0;i!=n;i++)Index[i]=i;mergeSort(nums,0,n-1);return ret;}void mergeSort(vector<int>& nums,int left,int right){//递归出口if(left>=right) return;//1.寻找中间位置int mid=left+(right-left)/2;//2.处理左区间、处理右区间mergeSort(nums,left,mid);mergeSort(nums,mid+1,right);//3.一左一右处理int cur1=left,cur2=mid+1,i=0;while(cur1<=mid&&cur2<=right){if(nums[cur1]<=nums[cur2]){Numstmp[i]=nums[cur2];Indextmp[i++]=Index[cur2++];}else{ret[Index[cur1]]+=right-cur2+1;Numstmp[i]=nums[cur1];Indextmp[i++]=Index[cur1++];}}//4.处理未归并的部分while(cur1<=mid){Numstmp[i]=nums[cur1];Indextmp[i++]=Index[cur1++];}while(cur2<=right){Numstmp[i]=nums[cur2];Indextmp[i++]=Index[cur2++];}//5.还原数组for(int i=left;i<=right;i++){nums[i]=Numstmp[i-left];Index[i]=Indextmp[i-left];}}
};

http://www.dtcms.com/a/382005.html

相关文章:

  • MYSQL端口号3306被占用
  • Python核心技术开发指南(062)——静态方法
  • [Windows] 整容脸比对系统
  • C语言:指针从入门到精通(上)
  • 【MySQL】--- 表的约束
  • SpringBoot 轻量级一站式日志可视化与JVM监控
  • Java零基础学习Day10——面向对象高级
  • JavaScript中ES模块语法详解与示例
  • 系统核心解析:深入操作系统内部机制——进程管理与控制指南(三)【进程优先级/切换/调度】
  • Roo Code:用自然语言编程的VS Code扩展
  • 第8.4节:awk的内置时间处理函数
  • leetcode算法刷题的第三十四天
  • 【技术博客分享】LLM推理过程中的不确定问题
  • Vue3基础知识-setup()、ref()和reactive()
  • 规则系统架构风格
  • 宋红康 JVM 笔记 Day17|垃圾回收器
  • vue表单弹窗最大化无法渲染复杂组件内容
  • 加餐加餐!烧烤斗破苍穹
  • SCSS 中的Mixins 和 Includes,%是什么意思
  • RFID基础了解 --- RC522
  • 第九篇 永磁同步电机控制-弱磁控制
  • 搭建langchain4j+SpringBoot的Ai项目
  • 一次 Linux 高负载 (Load) 异常问题排查实录
  • 扩散模型进化史
  • 学习Python是一个循序渐进的过程,结合系统学习、持续实践和项目驱动,
  • EKSPod 资源利用率配置修复:从占位符到完整资源分析系统
  • MySql基础:数据类型
  • 鸿蒙中的智能设备数据分析实战:从采集到建模的完整实现指南
  • Scikit-Learn 对糖尿病数据集(回归任务)进行全面分析
  • Scikit-learn 对加州房价数据集(回归任务)进行全面分析