class Solution {
/**
* 使用桶排序
* @param Integer[] $nums
* @return NULL
*/
function wiggleSort(&$nums) {
// nums中的元素 0<=n<=5000,所以造一个容量为5001的桶
$bucket = array_fill(0, 5001, 0);
foreach ($nums as $num) {
$bucket[$num]++;
}
$j = 5000;
// 从后向前遍历bucket,先填充nums中的偶数位,再填充其奇数位
$len = count($nums);
for ($i=1; $i<$len; $i+=2) {
while ($bucket[$j] == 0) {
--$j;
}
$nums[$i] = $j;
--$bucket[$j];
}
// 填充偶数位
for ($i=0; $i<$len; $i+=2) {
while ($bucket[$j] == 0) {
--$j;
}
$nums[$i] = $j;
--$bucket[$j];
}
}
}
摆动排序 II【php版】
最新推荐文章于 2022-06-28 16:23:47 发布