题目链接

Leetcode.912 排序数组 mid

题目描述

给你一个整数数组 n u m s nums nums,请你将该数组升序排列。

示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示

  • 1 < = n u m s . l e n g t h < = 5 ∗ 1 0 4 1 <= nums.length <= 5 * 10^4 1<=nums.length<=5∗104
  • − 5 ∗ 1 0 4 < = n u m s [ i ] < = 5 ∗ 1 0 4 -5 * 10^4 <= nums[i] <= 5 * 10^4 −5∗104<=nums[i]<=5∗104

解法:基数排序

我们注意到 n u m s nums nums 的值域为 : 5 × 1 0 4 − ( − 5 × 1 0 4 ) = 1 0 5 5 \times 10^4 - (-5 \times 10^4) = 10^5 5×104−(−5×104)=105;

所以我们可以用一个 c n t [ 1 0 5 + 1 ] cnt[10^5 + 1] cnt[105+1]来记录 n u m s [ i ] nums[i] nums[i] 的出现次数,最后我们再从小到大把对应的元素依次加入到 a n s ans ans 中即可。

时间复杂度: O ( n ) O(n) O(n)

C++代码:

const int N = 1e5 + 10 , BASE = 5e4;class Solution {public:vector<int> sortArray(vector<int>& nums) {int cnt[N] = {0};for(auto x:nums) cnt[x + BASE]++;vector<int> ans;for(int i = 0;i < N;i++){if(!cnt[i]) continue;for(int j = 0;j < cnt[i];j++) ans.emplace_back(i - BASE);}return ans;}
};

Leetcode.912 排序数组相关推荐

  1. Leetcode 912.排序数组(Sort an Array)

    Leetcode 912.排序数组 1 题目描述(Leetcode题目链接)   给定一个整数数组 nums,将该数组升序排列. 输入:[5,2,3,1] 输出:[1,2,3,5] 输入:[5,1,1 ...

  2. LeetCode 912. 排序数组(Java)

    912. 排序数组 你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 提示: 1 <= nums.length &l ...

  3. LeetCode 912. 排序数组【模板题】

    912. 排序数组 [快排] class Solution {// 快速排序 7:32 13void quickSort(int[] nums, int l, int r){if(l >= r) ...

  4. LeetCode[912]排序数组

    难度:Medium 题目: 给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1, ...

  5. LeetCode 912. 排序数组(10种排序)

    文章目录 1. 题目 2. 解题 2.1 插入排序 2.2 冒泡排序 2.3 选择排序 2.4 希尔排序 2.5 归并排序 2.6 快速排序 2.7 堆排序 2.8 计数排序 2.9 桶排序 2.10 ...

  6. 2022-4-9 Leetcode 912.排序数组

    第一版,使用库函数 `class Solution {public:vector<int> sortArray(vector<int>& nums) {sort(num ...

  7. [leetcode] 912.排序数组

    给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0 ...

  8. LeetCode 912. 排序数组-快排(C++)

    本题是华为一面手撕题目. 快排的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程 ...

  9. LeetCode删除排序数组中的重复项(Java实现)

    原题: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件 ...

最新文章

  1. /etc/hosts/中HOSTNAME错误导致lsnrctl启动错误
  2. 2014年应该学习的十种编程语言
  3. 【学习随手记】POSIX消息队列执行报Permission denied的问题。
  4. qt中记录数据的一次接收处理方法
  5. 原生DOM操作方法小结
  6. java log4j记录_JAVA中使用LOG4J记录日志
  7. 挑战摩尔定律极限,揭秘阿里云神龙的封神之路
  8. kafak manager + zookeeper + kafka 消费队列快速清除
  9. 直播APP系统源码,直播系统源码 直播系统源码
  10. EndNote X7 for Mac破解版
  11. Centos-Wake On Lan远程唤醒服务器
  12. qt button clicked(bool) always false
  13. 真格量化常见报错信息和Debug方法
  14. 删除gluster volume数据报错:no space left
  15. ApeCoin计划推出自己的区块链,Messari分析师们怎么看?
  16. 百度天气预报API的使用(java版本)
  17. sprintf基本用法
  18. 浏览器「无痕模式」可能要没…
  19. oracle一体机的管理界面,Oracle 数据库一体机:zData Light - 分布式存储管理平台
  20. macOS下移动硬盘无法挂载且硬盘灯一直闪烁的解决方法

热门文章

  1. AndroidStudio导入拉取的项目没有app等文件夹,可能是eclispe编写的项目
  2. 介于两者之间的——励志奋斗
  3. 十大超越人类极限的未来技术(组图)
  4. 漫画|我见过的那些奇葩面试官......
  5. Nacos 保护阈值
  6. 如何查看已链接手机的wifi密码?
  7. 不离不弃 共赴鸿蒙什么意思,不离不弃的意思是什么
  8. 淘宝开放平台接口申请与调试小结
  9. Android A/B系统切换
  10. 线性表的顺序存储结构及实现