《剑指offer》-调整数组顺序使奇数位于偶数前面
2018-01-30 10:24
267 查看
import java.util.*; /* * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序, * 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分, * 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 */ public class ReOrderArray { //算法一:借助两个list分别存放奇数数字和偶数数字(空间复杂度比较大) public void reOrderArray(int [] array) { int length = array.length; if(length == 0 || length == 1) return; List<Integer> list1 = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); for(int i = 0;i < length;i ++) { if(array[i] % 2 == 1) { //是奇数 list1.add(array[i]); } else list2.add(array[i]); } //重新给数组赋值 for(int i = 0;i < list1.size();i ++) { array[i] = list1.get(i); } for(int i = 0;i < list2.size();i ++) { array[i + list1.size()] = list2.get(i); } } //算法二:由于奇数存完了之后才能存偶数,先统计奇数的个数,即偶数存放的起点,再将数字存放到辅助数组里 public void reOrderArray2(int [] array) { if(array.length == 0 || array.length == 1) return; int oddCount = 0; for(int i = 0;i < array.length;i ++) { if(array[i] % 2 == 1) { //是奇数 oddCount ++; } } int [] temp = new int[array.length]; int oddBegin = 0; for(int i = 0;i < array.length;i ++) { if(array[i] % 2 == 1) { temp[oddBegin ++] = array[i]; } else { temp[oddCount ++] = array[i]; } } for(int i = 0;i < array.length;i ++) { array[i] = temp[i]; } } public static void main(String[] args) { int [] array = {1,2,3,4,5,6}; new ReOrderArray().reOrderArray2(array); for(int i : array) { System.out.print(i + " "); } } }
相关文章推荐
- 剑指offer面试题14 调整数组顺序使奇数位于偶数前面
- 剑指offer系列-T14_1调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面
- (剑指Offer)面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer系列之12:调整数组的顺序使奇数位于偶数前面
- 剑指Offer(21)调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 《剑指Offer》之“调整数组顺序使奇数位于偶数前面”
- 《剑指offer14——调整数组顺序使奇数位于偶数前面》
- 《剑指offer》刷题笔记(代码完整性):调整数组顺序使奇数位于偶数前面
- 剑指offer——调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- 《剑指Offer》面试题14:调整数组顺序使奇数位于偶数前面
- 牛客网-《剑指offer》-调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14:调整数组顺序使奇数位于偶数前面
- 《剑指Offer》读书笔记---面试题14:调整数组顺序使奇数位于偶数前面
- 剑指Offer系列-面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer 14 调整数组顺序使奇数位于偶数前面
- 剑指offer第14题:调整数组顺序使奇数位于偶数前面