您的位置:首页 > 其它

LintCode-----31.数组划分

2017-08-29 16:00 204 查看
原题目

使用快排的交换思想就行。值得注意的是,大于等于的数字一定要到左边。但是快排中等于是可以不动的。

public class Solution {
/*
* @param nums: The integer array you should partition
* @param k: An integer
* @return: The index after partition
*/
public int partitionArray(int[] nums, int k) {
if (nums == null || nums.length == 0) {
return 0;
}

int i = 0;
int j = nums.length - 1;
int result = 0;
while (i != j) {
while (nums[j] >=k && i < j) {
j--;
}
while (nums[i] <k && i < j) {
i++;
}
if (i < j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}

}
boolean flag = false;
for (int m = 0; m < nums.length; m++) {
if (nums[m] >= k) {
flag = true;
result = m;
break;
}
}
if (!flag) {
result = nums.length;
}
return result;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: