力扣 有多少小于当前数字的数字

题目描述

给你一个数组 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 <= nums.length <= 500
0 <= nums[i] <= 100

思路分析

方法一:暴力搜索

AC代码:

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

方法二:快速排序

将数组排序并用pair记录每个数在原数组中的位置,对于排序后的数组中的每一个数,只要找到其左侧第一个小于它的数就能知道数组中小于该数的数量

AC代码:

class Solution {public:vector<int> smallerNumbersThanCurrent(vector<int>& nums) {vector<pair<int, int>> data;int n = nums.size();for (int i = 0; i < n; i++) {data.emplace_back(nums[i], i);}sort(data.begin(), data.end());vector<int> ret(n, 0);int prev = -1;for (int i = 0; i < n; i++) {if (prev == -1 || data[i].first != data[i - 1].first) {prev = i;}ret[data[i].second] = prev;}return ret;}
};

力扣 有多少小于当前数字的数字相关推荐

  1. 力扣 求根到叶子节点数字之和

    力扣 求根到叶子节点数字之和 题目描述 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 ...

  2. 力扣每日一题 到达终点数字

    Day 37 Date: November 4, 2022 8:39 PM LinkedIn: https://leetcode.cn/problems/reach-a-number/descript ...

  3. 力扣 2042检查句子中地数字是否递增

    题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格.每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文 ...

  4. 力扣 每日一题 丢失的数字

    文章目录 题目 思路 AC代码 后记 题目 丢失的数字 思路 第一个思路是利用数学公式来对于nums做差得出答案: 第二个思路我觉得比较经典就是利用异或运算.因为异或有两个独特的性质: 0与任何数异或 ...

  5. leetcode(力扣)738. 单调递增的数字||714. 买卖股票的最佳时机含手续费

    738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n) ...

  6. 力扣编程题-解法汇总

    一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...

  7. LeetCode简单题之有多少小于当前数字的数字

    题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i ...

  8. C++算法学习(力扣:402. 移掉K位数字)

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...

  9. 力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树

    文章目录 738. 单调递增的数字 思路 难点:遍历顺序 难点:设置flag 714. 买卖股票的最佳时机含手续费 贪心思路 难点 968. 监控二叉树 思路 难点:如何隔两个节点放一个摄像头 738 ...

最新文章

  1. 微软职位内部推荐-Senior Software Engineer-Eco
  2. SQLServer 扫盲
  3. iOS组件化-带你一步步实现项目的组件化
  4. Unity3D学习笔记之八为场景添加细节(一)
  5. 浅谈 Linux API的交互式运行环境ipython是最好的REPL
  6. ZooKeeper管理员指南
  7. cp210x驱动怎么安装_电脑声卡驱动怎么安装,教你三步搞定声卡驱动
  8. HTML (3)---HTML编辑器
  9. TurboMail邮件服务器 V4.2.0 正式发布
  10. centos 6.5卸载Mysql
  11. 北京国家开放大学计算机学院,李继先
  12. python网络编程讲解_详解Python Socket网络编程
  13. 浏览器打印设置横向打印_震旦打印机如何设置认证打印
  14. 《普林斯顿微积分读本》笔记-第3章极限导论
  15. hp android 计算器,惠普图形计算器(HP Prime Graphing Calculator)
  16. laravel应用密钥
  17. 【物联网专题】2.1_设备管理平台_什么是产品?
  18. css背景图片全屏_使用CSS3的全屏背景图片幻灯片
  19. OSChina 周三乱弹 —— 迷宫里乱开宝箱的后果
  20. IDEA中运行maven多模块项目,提示程序包xxxx不存在

热门文章

  1. Android中BitmapFactory.Options详解
  2. TOP计划猿10最佳实践文章
  3. RDS还原数据库时报错:ERROR 1227 (42000) at line 78664
  4. 如何过上简单的生活(转)
  5. 组策略批量更改固定IP为自动获取
  6. VMware VSphere 引发的学案(三)
  7. 1、Intellij IDEA中启动NameServer
  8. 【调试工具】之IOS真机测试
  9. yuv播放器/rgb播放器
  10. 【实用工具】之在VS中使用自定义工具配置nasm/yasm