912. 排序数组
你一个整数数组 nums,请你将该数组升序排列。
示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]
提示:
1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:应该是桶排序吧,不过先找到所给数组中的最大和最小值,以缩小范围,减小运行时间
class Solution {
public int[] sortArray(int[] nums) {
//找到最大最小值缩小范围
int min=50001;
int max=-50001;
for(int num:nums)
{
min=Math.min(num,min);
max=Math.max(num,max);
}
//记录数组中每个数的个数
int[] temp=new int[max-min+1];
for(int num:nums)
{
temp[num-min]++;
}
//依顺序放回原数组中
int index=0;
for(int num=min;num<=max;num++)
{
int count=temp[num-min]
while(count-->0)
{
nums[index++]=num;
}
}
return nums;
}
}