本文共 1205 字,大约阅读时间需要 4 分钟。
Example 1:
Input: [1,2,0]Output: 3
Example 2:
Input: [3,4,-1,1]Output: 2
Example 3:
Input: [7,8,9,11,12]Output: 1
Note:
Your algorithm should run in O(n) time and uses constant extra space.
class Solution {public: int firstMissingPositive(vector & nums) { int len = nums.size(); for (int i = 0; i < len; ++i) { while (nums[i] > 0 && nums[i] <= len && nums[nums[i]-1] != nums[i]) { int temp = nums[nums[i]-1]; nums[nums[i]-1] = nums[i]; nums[i] = temp; } } for (int i = 0; i < len; ++i) { if (nums[i] != i + 1) { return i+1; } } return len+1; }};
桶排序(Bucket sort)或所谓的箱排序,是一个,工作的原理是将分到有限数量的桶里。每个桶再个别排序(有可能再使用别的或是以递归方式继续使用桶排序进行排序)。桶排序是的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间({\displaystyle \Theta (n)}())。但桶排序并不是,他不受到{\displaystyle O(n\log n)}下限的影响。
桶排序以下列程序进行:
转载地址:http://lgtuz.baihongyu.com/