# #31 Partition Array

Given an array nums of integers and an int k, partition the array (i.e move the elements in "nums") such that:

• All elements < k are moved to the left
• All elements >= k are moved to the right

Return the partitioning index, i.e the first index i nums[i] >= k.

##### Notice

You should do really partition in array nums instead of just counting the numbers of integers smaller than k.

If all elements in nums are smaller than k, then return nums.length

Example

If nums = [3,2,2,1] and k=2, a valid answer is 1.

Challenge

Can you partition the array in-place and in O(n)?

Mycode（AC = 13ms）：

class Solution {
public:
int partitionArray(vector<int> &nums, int k) {
if (nums.size() == 0) return 0;

int l = 0, r = nums.size() - 1;
for (int i = 0; i <= r; i++) {
// swap left and index if nums[i] < k
if (nums[i] < k) {
swap(nums, i, l);
l++;
}
// swap right and index if nums[i] < k
else {
swap(nums, i, r);
// it is possible that the original
// nums[r] is smaller than k, in that
// case, should do another swap between
// l and old i
if (nums[i] < k) i--;
r--;
}
}

return l;
}

void swap(vector<int> &nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
};

• 本文已收录于以下专栏：

## [leetcode: Python]561. Array Partition I

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1...
• NXHYD
• 2017年05月19日 16:20
• 1113

## [LeetCode]561. Array Partition I (数组分区 1)

561. Array Partition IGiven an array of 2n integers, your task is to group these integers into n pai...
• whl_program
• 2017年04月25日 00:21
• 3847

## LeetCode 561 Array Partition I（数组划分）

• NoMasp
• 2017年05月05日 21:07
• 2739

## 【LeetCode】Array Partition I 解题报告

【LeetCode】Array Partition I 解题报告标签（空格分隔）： LeetCode题目地址：https://leetcode.com/problems/array-partition...
• fuxuemingzhu
• 2017年05月08日 14:41
• 711

## 561. Array Partition I(Java)

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1...
• Crystal_ting
• 2017年08月11日 16:57
• 163

## 561. Array Partition I的C++解法

• musechipin
• 2017年04月25日 16:37
• 405

## Array Partition I，数组分对中最小值的和最大值

package leetCode; import java.util.Arrays; //给定一个长度为2n的整数数组，将数组分成n组，求每组数的最小值之和的最大值。 /*[1,2,3,4]  *...
• u014043709
• 2017年05月08日 11:07
• 434

## leetcode-561(Array Partition I)

Decription Given an array of 2n integers, your task is to group these integers into n pairs of ...
• u011573551
• 2017年06月02日 10:58
• 255

## Partition Array的总结

• u012255731
• 2016年09月28日 16:27
• 429

## 561. Array Partition I(C语言)

• yanqueen2011
• 2017年05月10日 11:03
• 576

举报原因： 您举报文章：#31 Partition Array 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)