数组划分 Lintcode 31
已知:
给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
- 所有小于k的元素移到左边
- 所有大于等于k的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。
思路:
虽然题意的意思是数组本身也要进行调整,但是并没有做检查…
本题思路比较简单,代码如下:
public class Solution {
public int partitionArray(int[] nums, int k) {
if(nums.length == 0){
return 0;
}
//令flag代表第一个nums上的值大于等于K的下标
int flag = nums[0] < k ? 1 : 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] < k) {
int temp = nums[flag];
nums[flag] = nums[i];
nums[i] = temp;
flag++;
}
}
return flag;
}
}
谢谢您的阅读,希望对您有所帮助^_^