美文网首页
Lintcode464 Sort Integers II sol

Lintcode464 Sort Integers II sol

作者: 程风破浪会有时 | 来源:发表于2018-03-19 08:23 被阅读0次

【题目描述】

Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(nlogn) algorithm.

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。

【题目链接】

www.lintcode.com/en/problem/sort-integers-ii/

【题目解析】

我们可以使用类似桶排序的思想,对所有的数进行计数。

从左扫描到右边,遇到一个数字,先找到对应的bucket.比如 3 2 2 1 4 第一个3对应的bucket是index = 2 (bucket从0开始计算)

Bucket 如果有数字,则把这个数字移动到i的position(就是存放起来),然后把bucket记为-1(表示该位置是一个计数器,计1)。

Bucket 存的是负数,表示这个bucket已经是计数器,直接减1. 并把color[i] 设置为0 (表示此处已经计算过)

Bucket 存的是0,与3一样处理,将bucket设置为-1, 并把color[i] 设置为0 (表示此处已经计算过)

回到position i,再判断此处是否为0(只要不是为0,就一直重复2-4的步骤)。 6.完成1-5的步骤后,从尾部到头部将数组置结果。(从尾至头是为了避免开头的计数器被覆盖)

【参考答案】

www.jiuzhang.com/solutions/sort-integers-ii/

相关文章

网友评论

      本文标题:Lintcode464 Sort Integers II sol

      本文链接:https://www.haomeiwen.com/subject/aamkoxtx.html