剑指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]; } } } } |

更多精彩