题目描述:
Partition an integers array into odd number first and even number second.
Example
Given [1, 2, 3, 4]
, return [1, 3, 2, 4]
Challenge
题目思路:
Do it in-place.
这题也是比较直观:用一个pointer l表示可以放入odd number的index,index i依次向右移动,当nums[i]为奇数时,就把这个数和nums[l]互换,这样保证了左边永远是奇数。
Mycode(AC = 16ms):
class Solution {
public:
/**
* @param nums: a vector of integers
* @return: nothing
*/
void partitionArray(vector<int> &nums) {
// write your code here
int l = 0;
// l always points to the odd number position
for (int i = 0; i < nums.size(); i++) {
if (nums[i] % 2 == 1) {
swap(nums, i, l);
l++;
}
}
}
void swap(vector<int> &nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
};