给你一个整数数组 nums = [3,1,2,4],将 nums中的所有偶数元素移动到数组的前面,后跟所有奇数元素。 用java解决
时间: 2024-09-18 22:01:45 浏览: 40
乘积最大子数组.md
你可以使用双指针技巧来解决这个问题,在Java中可以这样做:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int[] nums = {3, 1, 2, 4};
List<Integer> result = separateEvenOdd(nums);
for (int num : result) {
System.out.print(num + " ");
}
}
public static List<Integer> separateEvenOdd(int[] nums) {
List<Integer> evenList = new ArrayList<>();
List<Integer> oddList = new ArrayList<>();
// 使用两个指针,一个从头开始,一个从尾开始
int left = 0, right = nums.length - 1;
while (left < right) {
if (nums[left] % 2 == 0) { // 如果左指针指向的是偶数
evenList.add(nums[left]);
left++;
} else { // 如果左指针指向的是奇数
oddList.add(nums[left]);
left++;
}
if (right % 2 == 0) { // 如果右指针指向的是偶数
oddList.add(nums[right]);
right--;
} else { // 如果右指针指向的是奇数
evenList.add(nums[right]);
right--;
}
}
// 将两个列表合并
return evenList.addAll(oddList);
}
}
```
运行上述代码后,数组`nums`会被转换成[2, 4, 3, 1]的形式,其中所有的偶数在前,奇数在后。
阅读全文