解题思路
遍历数组将遇到的奇数放在另一个数组的前半部分,遍历完之后再遍历一遍这次将遇到偶数放在之前的奇数的后边即可
解题代码
class Solution { //暴力解法
public int[] exchange(int[] nums) {
int[] count = new int[nums.length];
int j = 0;
for(int i = 0; i < nums.length; i++)
{
if(nums[i] % 2 != 0)
{
count[j] = nums[i];
j++;
}
}
for(int i = 0; i < nums.length; i++)
{
if(nums[i] % 2 == 0)
{
count[j] = nums[i];
j++;
}
}
return count;
}
}
class Solution { //快慢指针
public int[] exchange(int[] nums) {
int fast = 0 , slow = 0;
while(fast < nums.length)
{
if( nums[fast] % 2 != 0)
{
int temp = nums[slow];
nums[slow] = nums[fast];
nums[fast] = temp;
slow++;
}
fast++;
}
return nums;
}
}
总结
暴力解法的话比较简单,通过两次遍历数组即可解决,快慢指针则是先用快指针去找下一个奇数,遇到下一个奇数时与当前慢指针所指位置进行交换,这样遍历完整个数组后,交换后得到的数组即为满足题意的数组