题解 | #调整数组顺序使奇数位于偶数前面#
调整数组顺序使奇数位于偶数前面
http://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b
题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
新创建一个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; } } }