当前位置: 代码迷 >> 综合 >> LintCode-数组划分
  详细解决方案

LintCode-数组划分

热度:24   发布时间:2023-10-13 08:43:11.0

给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
所有小于k的元素移到左边
所有大于等于k的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。

class Solution {
    
public:/*** @param nums: The integer array you should partition* @param k: An integer* @return: The index after partition*/int partitionArray(vector<int> &nums, int k) {
    // write your code hereint left = 0;int right = nums.size()-1;if (left >= right)return 0;while (left < right){
    while(nums[right] >= k && left < right){
    right--;}while(nums[left] < k && left < right){
    left++;}if (left < right){
    int temp = nums[left];nums[left] = nums[right];nums[right] = temp;}}if (nums[right] < k){
    right++;}return right;}
};