数组奇偶划分
来源:互联网 发布:mac口红是什么牌子 编辑:程序博客网 时间:2024/06/10 04:12
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。
情况一
不需要保证奇数和偶数之间相对位置不变。
这里可以用快排的思想。时间复杂度为O(n)
public static int[] reOrderArray(int[] array) { int left = 0; int right = array.length - 1; while (left < right) { while (left < right && array[left] % 2 == 1) { left++; } while (left < right && array[right] % 2 == 0) { right--; } int tmp = array[left]; array[left] = array[right]; array[right] = tmp; } return array; }
情况二
保证奇数和奇数,偶数和偶数之间的相对位置不变。
(1)新建一个数组,时间复杂度为O(n),空间复杂度为O(n)
public static int[] reOrderArray(int[] array) { int[] result = new int[array.length]; int j = 0; for (int i = 0; i < array.length; i++) { if (array[i] % 2 == 1) { result[j] = array[i]; j++; } } for (int i = 0; i < array.length; i++) { if (array[i] % 2 == 0) { result[j] = array[i]; j++; } } return result; }
(2)利用插入排序的思想,时间复杂度为O(n^2),空间复杂度为O(1)
public void reOrderArray(int [] array) { for(int i=1;i<array.length;i++){ if(array[i]%2==1){ int tmp=array[i]; int j=i-1; while(j>=0 &&array[j]%2==0){ array[j+1]=array[j]; j--; } array[j+1]=tmp; } } }
阅读全文
0 0
- 数组奇偶划分
- 字符串反转及数组奇偶划分
- 把数组中的奇偶数划分为两组
- 数组奇偶
- 数组划分
- 数组划分
- 数组划分
- 数组划分
- 数组划分
- 数组划分
- 数组划分
- 数组奇偶数排序
- 数组奇偶移位
- 题目:奇偶分割数组
- 奇偶分割数组
- LintCode_373_奇偶分割数组
- 奇偶分割数组
- lintcode ----奇偶分割数组
- 严重: Exception starting filter struts2 Unable to load configuration
- LeetCode 205. Isomorphic Strings
- 【美团面试】不开辟新的内存空间实现数组去重
- TextView 中SpannableString应用,让你灵活玩转TextView
- LRU缓存实现(Java)
- 数组奇偶划分
- Docker总结(一)
- Surprising Strings
- Jenkins集成.NET操作说明
- PostgreSQL BRIN索引内核代码优化思考
- Hadoop的两个核心组成
- Promise
- 7.TCP和UDP的区别和应用场景
- spark键值对操作(二)之数据分区