#牛客在线求职答疑中心#给定一个数组arr,其中只可能含有0、1、2三个值,请实现arr的排序
全部评论
你可以使用桶排序算法来解决这个问题。具体步骤如下:
1. 创建三个桶,分别用于存储0、1和2。
2. 遍历数组arr,将每个元素放入对应的桶中。
3. 遍历三个桶,将元素依次放入新的数组result中。
以下是使用Python实现的代码:
```python
def sort_arr(arr):
buckets = [0, 0, 0]
for num in arr:
buckets[num] += 1
result = []
for i in range(3):
result.extend([i] * buckets[i])
return result
```
你可以调用这个函数来对数组进行排序:
```python
arr = [2, 0, 1, 1, 2, 0, 2, 1, 0]
sorted_arr = sort_arr(arr)
print(sorted_arr) # 输出:[0, 0, 0, 1, 1, 1, 2, 2, 2]
```
这个算法的时间复杂度为O(n),空间复杂度为O(1)。
送花
回复 分享
leetcode原题啊
送花
回复 分享
![](https://uploadfiles.nowcoder.com/files/20230525/652858152_1685014678820/企业微信截图_1685014605956.png)
国泰君安
校招火热招聘中
官网直投
相关推荐
05-15 16:44
C++ 点赞 评论 收藏
分享