题目

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

思路

新创建一个ArrayList集合,遍历循环题目给出的数组,对每一个元素进行求余操作,如果%2==1,说明是奇数,ArrayList集合添加该元素;再进行一次循环,如果%2==1,说明是偶数,ArrayList集合添加该元素,如此ArrayList集合中的元素就按照奇数在前,偶数在后,且每个元素的相对位置不变。但是ArrayList并不是我们想要的,返回的应该是一个int型的一维数组,所以新定义一个int[] arr = new int[array.length];遍历循环ArrayList集合把每个元素添加进arr数组中。

代码

import java.util.*;

public class Solution {
    public int[] reOrderArray (int[] array) {
        //如果数组长度为空,返回一个空的int型一维数组
        if(array.length == 0){
            return new int[0];
        }else{
            ArrayList arrayList = new ArrayList();
            for(int i=0;i<array.length;i++){
                if(array[i]%2 == 1){
                    //奇数
                    arrayList.add(array[i]);
                }
            }
            for(int i=0;i<array.length;i++){
                if(array[i]%2 == 0){
                    //偶数
                    arrayList.add(array[i]);
                }
            }

            int[] arr = new int[array.length];
            for(int i=0;i<arrayList.size();i++){
                //因为ArrayList集合是Object类型,所以需要转成Integer型
                arr[i] = (Integer)arrayList.get(i);
            }
            return arr;
        }

    }
}