LintCode on Array by Odd and Even

来源:互联网 发布:mac book air视频剪辑 编辑:程序博客网 时间:2024/05/18 17:40

description:
Partition an integers array into odd number first and even number second.

Have you met this question in a real interview? Yes
Example
Given [1, 2, 3, 4], return [1, 3, 2, 4]

非常简单,直接使用two pointers 的算法就能够非常好的处理。

public class Solution {    /**     * @param nums: an array of integers     * @return: nothing     */    public void partitionArray(int[] nums) {        // write your code here;        if (nums == null || nums.length == 0 || nums.length == 1) {            return;        }        int left = 0;        int right = nums.length - 1;        while (left <= right) {            if (left >= right) {                return;            }            while (left <= right && nums[left] % 2 == 1) {                left++;            }            while (left <= right && nums[right] % 2 == 0) {                right--;            }            if (left <= right) {                int temp = nums[left];                nums[left] = nums[right];                nums[right] = temp;                left++;                right--;            }        }    }}
0 0