《劍指 Offer》——調整數組順序使奇數位於偶數前面

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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章