剑指offer 13.代码的完整性 调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
本渣渣解题思路:
遍历整个数组array,
遇到偶数,添加到list1;
遇到奇数,添加到list2;
再先后把list1和list2中的数添加到array
代码实现如下:
import java.util.LinkedList; |
牛客大神:
新开数组空间换时间的解法,
a.遍历数组,如果是奇数从头部放入到原数组中,并记录指针
b.如果是偶数,放入到新数组中,并记录指针
c.将新数组的元素安顺序,从最后一个奇数后边插入到原数组中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class Solution { public void reOrderArray( int [] array) { if (array != null ) { int [] even = new int [array.length]; int indexOdd = 0 ; int indexEven = 0 ; for ( int num : array) { if ((num & 1 ) == 1 ) { array[indexOdd++] = num; } else { even[indexEven++] = num; } } for ( int i = 0 ; i < indexEven; i++) { array[indexOdd + i] = even[i]; } } } } |