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);
}
}