public class Solution {
/**
*@param nums: The integer array you should partition
*@param k: As description
*return: The index after partition
*/
public int partitionArray(int[] nums, int k) {
// 2015-09-23 O(n)
// 注意所有元素小于k的情况
if (nums == null || nums.length < 1) {
return 0;
}
int start = 0;
int end = nums.length - 1;
while (start < end) {
if (nums[start] < k) {
start++;
} else if (nums[end] >= k) {
end--;
} else {
swap(nums, start, end);
start++;
}
}
// 此时start = end
if (nums[start] < k) {
return start + 1;
} else {
return start;
}
}
private void swap(int[] nums, int start, int end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
}
}
[刷题]Partition Array
最新推荐文章于 2020-07-20 00:02:18 发布