面试题21. 调整数组顺序使奇数位于偶数前面

题目

面试题21. 调整数组顺序使奇数位于偶数前面

思路

  1. 双指针法,两个指针,一个从数组的头部开始,一个从数组的尾部开始。
  2. 若头部指针指向的当前数据为奇数,那么向后移动指针,直到遇到不满足的情况;
  3. 尾指针向前移动,若当前尾指针指向的元素不满足;
  4. 交换两指针指向的元素。

实现

class Solution {
    public int[] exchange(int[] nums) {
        int len = nums.length - 1;
        int left = 0;
        int right = len;
        while (left < right) {
            while ((nums[left] % 2 != 0) && (left < right)) left++;
            while ((nums[right] % 2 == 0) && (left < right)) right--;
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
        }
        return nums;
    }
}

你可能感兴趣的:(剑指offer题解)