题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
解题思路
这道题很简单,我的想法是新建一个数组永远存储答案,并且设置了两个位置变量,主要是要将原数组的数据进行存储到新数组,用数组变量来确认每个元素的位置,奇数主要是从头开始插入,而偶数则从尾部进行插入,对原始数组进行遍历后按照取余为0还是1进行判断插入,就完成了。
我看答案中是进行数组元素的交换,我觉得也可以,通过设置两个位置变量进行遍历数组,交换条件是左边为偶数并且右边为奇数,否则进行往中间遍历,这样应该是比我写的算法更快,但是在leetcode上我的算法得分较高,我也不知道为什么。。。。
代码部分
交换数组元素位置的代码没写,以下是新建一个数组解法的代码:
class Solution {
public int[] exchange(int[] nums) {
int len=nums.length;
int[] result=new int[len];
int loc1=0;
int loc2=len-1;
for(int i=0;i<len;i++){
if(nums[i]%2==0){
result[loc2]=nums[i];
loc2--;
}else{
result[loc1]=nums[i];
loc1++;
}
}
return result;
}
}