Leetcode.912 排序数组
题目链接
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 排序数组相关推荐
- Leetcode 912.排序数组(Sort an Array)
Leetcode 912.排序数组 1 题目描述(Leetcode题目链接) 给定一个整数数组 nums,将该数组升序排列. 输入:[5,2,3,1] 输出:[1,2,3,5] 输入:[5,1,1 ...
- LeetCode 912. 排序数组(Java)
912. 排序数组 你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 提示: 1 <= nums.length &l ...
- LeetCode 912. 排序数组【模板题】
912. 排序数组 [快排] class Solution {// 快速排序 7:32 13void quickSort(int[] nums, int l, int r){if(l >= r) ...
- LeetCode[912]排序数组
难度:Medium 题目: 给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1, ...
- 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 ...
- 2022-4-9 Leetcode 912.排序数组
第一版,使用库函数 `class Solution {public:vector<int> sortArray(vector<int>& nums) {sort(num ...
- [leetcode] 912.排序数组
给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0 ...
- LeetCode 912. 排序数组-快排(C++)
本题是华为一面手撕题目. 快排的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程 ...
- LeetCode删除排序数组中的重复项(Java实现)
原题: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件 ...
最新文章
- /etc/hosts/中HOSTNAME错误导致lsnrctl启动错误
- 2014年应该学习的十种编程语言
- 【学习随手记】POSIX消息队列执行报Permission denied的问题。
- qt中记录数据的一次接收处理方法
- 原生DOM操作方法小结
- java log4j记录_JAVA中使用LOG4J记录日志
- 挑战摩尔定律极限,揭秘阿里云神龙的封神之路
- kafak manager + zookeeper + kafka 消费队列快速清除
- 直播APP系统源码,直播系统源码 直播系统源码
- EndNote X7 for Mac破解版
- Centos-Wake On Lan远程唤醒服务器
- qt button clicked(bool) always false
- 真格量化常见报错信息和Debug方法
- 删除gluster volume数据报错:no space left
- ApeCoin计划推出自己的区块链,Messari分析师们怎么看?
- 百度天气预报API的使用(java版本)
- sprintf基本用法
- 浏览器「无痕模式」可能要没…
- oracle一体机的管理界面,Oracle 数据库一体机:zData Light - 分布式存储管理平台
- macOS下移动硬盘无法挂载且硬盘灯一直闪烁的解决方法