您的位置:首页 > 其它

31 - 数组划分

2017-09-18 08:58 239 查看
2017.9.18

数组划分,采用的就是快排的思路。

细节需要处理一下,比如数组都小于k的时候,要返回数组的长度。

以及当nums【height】< k时,位置需要向后加1.

public class Solution {
/*
* @param nums: The integer array you should partition
* @param k: An integer
* @return: The index after partition
*/
public static int partitionArray(int[] nums, int k) {
// write your code here
if(nums == null ||nums.length == 0){
return 0;
}
int low = 0;
int height = nums.length-1;
int tmp = nums[height];
while(low < height){
while(low < height && nums[low] < k){
low ++;
}
nums[height] = nums[low];
while(low < height && nums[height] >= k){
height --;
}
nums[low] = nums[height];
}
if(tmp < k){
return low+1;
}
if(nums[nums.length-1] < k){
return nums.length;
}
return low;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: