Leetcode 912.排序数组
1 题目描述(Leetcode题目链接)
给定一个整数数组 nums,将该数组升序排列。
输入:[5,2,3,1]
输出:[1,2,3,5]
输入:[5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
- 1 <= A.length <= 10000
- -50000 <= A[i] <= 50000
2 题解
个人比较喜欢用桶排序,很简单,而且空间那么多浪费就浪费吧,换来时间岂不是更舒服~。
class Solution:
def sortArray(self, nums: List[int]) -> List[int]:
bucket_1 = [0]*50001 #正数桶
bucket_2 = [0]*50001 #负数桶
for num in nums:
if num >= 0:
bucket_1[num] += 1
else:
bucket_2[abs(num)] += 1
retv = []
for i in range(50000, -1, -1):
while bucket_2[i] > 0:
retv.append(-i)
bucket_2[i] -= 1
for i in range(50001):
while bucket_1[i] > 0:
retv.append(i)
bucket_1[i] -= 1
return retv