31. Partition Array

Code(Language:C++) (Judger:ip-172-31-18-231)
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 here
        const int size = nums.size();
        if(size == 0){
            return 0; 
        }
        int left = 0; 
        int right = size - 1; 
        while(left < right){
            while(left < right && nums[left] < k){
                left++;
            }
            while(left < right && nums[right] >= k){
                right--; 
            }
            if(left < right){
                int tmp = nums[left];
                nums[left] = nums[right];
                nums[right] = tmp; 
                right--;
                left++; 
            }
        }
        for(int i = 0; i < size; i++){
            if(nums[i] >= k){
                return i; 
            }
        }
        return size; 
    }
};

Comments

Popular posts from this blog

算法的比较