大体思路:
- 定义输出数组 re
java
int[] re = new int[nums.length]; - 定义三个指针 i j k 分别指向原数组、偶数位和奇数位
java
int i = 0, j = 0, k = nums.length - 1; - 遍历原数组
java
for (i = 0; i < nums.length; i++) { - 如果当前元素是偶数则放入奇数位,否则放入偶数位
java
if (nums[i] % 2 == 0) {
re[k] = nums[i];
k–;
} else {
re[j] = nums[i];
j++;
} - 指针 j 和 k 相应后移一个位置
- 返回结果数组 re
java
return re;
完整代码
class Solution {
public int[] exchange(int[] nums) {
// 定义返回数组re
int[] re = new int[nums.length];
// 定义指针i、j和k,i遍历原数组,j指向偶数位,k指向奇数位
int i = 0, j = 0, k = nums.length - 1;
// 遍历整个数组
for (i = 0; i < nums.length; i++) {
// 如果当前元素是偶数
if (nums[i] % 2 == 0) {
// 把元素放入奇数位
re[k] = nums[i];
k--; // 移动奇数位指针
}
// 否则是奇数
else {
// 放入偶数位
re[j] = nums[i];
j++; // 移动偶数位指针
}
}
return re; // 返回结果数组
}
}