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;
}
}
数组划分,采用的就是快排的思路。
细节需要处理一下,比如数组都小于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;
}
}
相关文章推荐
- 31. 数组划分
- lintcode-31-数组划分
- <LeetCode> 题31:数组划分
- 31. 数组划分
- LintCode-----31.数组划分
- lintcode-31数组划分
- 剑指offer 31题 【时间效率】连续子数组的最大和
- Leetcode 410. Split Array Largest Sum 划分数组 解题报告
- 面试题31:连续子数组的最大和
- LintCode-数组划分
- 剑指Offer之面试题31:连续子数组的最大和
- 【剑指Offer学习】【面试题31:连续子数组的最大和】
- 面试题:数组划分成两个子数组,和的差值的绝对值最小
- 剑指offer 31 - 连续子数组的最大和
- 数组划分——LintCode
- 剑指offer 31. 连续子数组的最大和
- 剑指offer 面试题31 连续子数组的最大和
- JAVA开发之 31-JAVA数组的应用
- 剑指offer-面试题31:连续子数组的最大和
- Java实现-数组划分