《剑指 Offer》——13、调整数组顺序使奇数位于偶数前面

    技术2022-07-11  144

    1. 本题知识点

    数组

    2. 题目描述

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

    例如:

    Input: [1,2,3,4,5] Output: [1,3,5,2,4]

    3. 解题思路

    创建一个奇数数组和一个偶数数组,将原数组中的奇数和偶数分别加入其中,最后将奇数数组和偶数数组赋值给原数组。

    原数组:[1,2,3,4,5] 奇数数组:[1,3,5] 偶数数组:[2,4] 赋值给原数组:[1,3,5,2,4]

    4.代码

    public class Solution { /** * 调整数组顺序使奇数位于偶数前面 * 并保证奇数和奇数,偶数和偶数之间的相对位置不变 * * @param array */ public void reOrderArray(int[] array) { // 偶数数组 int[] evenArray = new int[array.length]; // 奇数数组 int[] oddArray = new int[array.length]; // 偶数个数 int evenNum = 0; // 奇数个数 int oddNum = 0; // 遍历原数组 for (int i = 0; i < array.length; i++) { // 当前元素为偶数,则加入偶数数组 if (array[i] % 2 == 0) { evenArray[evenNum] = array[i]; evenNum++; } // 当前元素为奇数,则加入奇数数组 else { oddArray[oddNum] = array[i]; oddNum++; } } // 将奇数数组和偶数数组赋值给原数组 System.arraycopy(oddArray, 0, array, 0, oddNum); System.arraycopy(evenArray, 0, array, oddNum, evenNum); } }
    Processed: 0.009, SQL: 9