剑指offer — 调整数组顺序使奇数位于偶数前面
2017-12-19 18:52
393 查看
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
(1) 该题目要求保持相对的顺序,因此可以使用一个额外的存储空间
java
import java.util.*;
public class Solution {
public void reOrderArray(int [] array) {
if (array == null || array.length == 0) {
return;
}
Queue<Integer> queue = new LinkedList<>();
int p1 = 0;
int p2 = 0;
while (p1 < array.length) {
if ((array[p1] & 1) == 0) {
queue.offer(array[p1++]);
} else {
array[p2++] = array[p1++];
}
}
while (!queue.isEmpty()) {
array[p2++] = queue.poll();
}
}
}
(2)如果不要求保持顺序的话,可以直接使用双指针的方法去处理
(1) 该题目要求保持相对的顺序,因此可以使用一个额外的存储空间
java
import java.util.*;
public class Solution {
public void reOrderArray(int [] array) {
if (array == null || array.length == 0) {
return;
}
Queue<Integer> queue = new LinkedList<>();
int p1 = 0;
int p2 = 0;
while (p1 < array.length) {
if ((array[p1] & 1) == 0) {
queue.offer(array[p1++]);
} else {
array[p2++] = array[p1++];
}
}
while (!queue.isEmpty()) {
array[p2++] = queue.poll();
}
}
}
(2)如果不要求保持顺序的话,可以直接使用双指针的方法去处理
相关文章推荐
- 剑指offer之调整数组顺序使奇数位于偶数前面
- 剑指offer 14题 【代码的完整性】调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指Offer----调整数组顺序使奇数位于偶数前面
- 剑指Offer之 - 调整数组顺序使奇数位于偶数前面
- 剑指Offer——(13)调整数组顺序使奇数位于偶数前面
- 剑指offer题解C++【13】调整数组顺序使奇数位于偶数前面
- 剑指offer_调整数组顺序呢使奇数位于偶数前面
- 剑指offer之面试题14 调整数组顺序使奇数位于偶数前面 之菜鸟与小牛写法对比
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组的顺序使奇数位于偶数前面
- 剑指offer-面试题14-调整数组顺序使奇数位于偶数前面
- 剑指offer(十二,十三) 数值的整数次方,调整数组顺序使奇数位于偶数前面
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 剑指offer——调整数组顺序使奇数位于偶数前面
- 【剑指Offer】调整数组顺序使奇数位于偶数前面 解题报告(Python)
- 剑指offer题解 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 剑指Offer之调整数组顺序使奇数位于偶数前面