題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
此題很簡單,兩個容器,第一個裝不能被2整除的,第二個裝能被2整除的。
原始解法:
import java.util.*;
public class Solution {
public void reOrderArray(int [] array) {
ArrayList<Integer> odd=new ArrayList<Integer>();
ArrayList<Integer> even=new ArrayList<Integer>();
int len=array.length;
int temp=0;
for(int i=0;i<len;i++){
temp=array[i];
if(temp%2==1) odd.add(array[i]);
else even.add(array[i]);
}
int t=0;
for(int m=0;m<odd.size();m++){
array[t]=odd.get(m);
t++;
}
for(int n=0;n<even.size();n++){
array[t]=even.get(n);
t++;
}
}
}
改進後的解法:public void method(int[] array) {
ArrayList<Integer> arr1 = new ArrayList<Integer>();
ArrayList<Integer> arr2 = new ArrayList<Integer>();
int len = array.length;
for (Integer i : array) {
if (i % 2 != 0)
arr1.add(i);
else
arr2.add(i);
}
arr1.addAll(arr2);
for(int i=0;i<len;i++)
array[i]=arr1.get(i);
}
看上去清爽了許多有木有,我可能有代碼潔癖。