《剑指offer》——调整数组顺序使奇数位于偶数前面
2015-12-05 19:55
302 查看
T:
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
这道题目,我思考了好久,想过各种解决方案,都是基于在本数组上进行操作,无额外的数组开销,还要考虑线性复杂度。但是最终还是没找到解决方案,只得用额外开辟数组的方式来解决。
我的核心code:
AC之后,我看了讨论版其他人的解决方案,也没有找到我之前设想的解决方法,虽然很多都是在原有数组上进行操作,没有额外的空间开销,但是时间复杂度也上去了,成了O(n2)O(n^2),而我的代码的时间复杂度是O(n)O(n),只不过是用时间换空间的做法。
贴两个别人的解决方式:
冒泡排序的修改版:这种方式,感觉还不如不用,只不过用时间换空间,太耗时了。。。
![](http://img.blog.csdn.net/20151205195444762)
插入排序:和前一个方法也差不多,都是O(n2)O(n^2)
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
这道题目,我思考了好久,想过各种解决方案,都是基于在本数组上进行操作,无额外的数组开销,还要考虑线性复杂度。但是最终还是没找到解决方案,只得用额外开辟数组的方式来解决。
我的核心code:
/** * T: 调整数组顺序使奇数位于偶数前面 * * 题目描述 * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, * 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 * * date: 2015.12.5 18:54 * @author SSS * */ public class Solution { public void reOrderArray(int [] array) { if (array == null || array.length == 0) { return; } // 分别开辟奇数和偶数的数组,存储原数组中的数据,保证其相对位置不变 int []oddArr = new int[array.length]; int []evenArr = new int[array.length]; int oddIndex = 0; int evenIndex = 0; for (int i = 0; i < array.length; i++) { if (array[i] % 2 == 0) { evenArr[evenIndex ++] = array[i]; } else { oddArr[oddIndex ++] = array[i]; } } for (int i = 0; i < oddIndex; i++) { array[i] = oddArr[i]; } for (int i = 0; i < evenIndex; i++) { array[oddIndex + i] = evenArr[i]; } } }
AC之后,我看了讨论版其他人的解决方案,也没有找到我之前设想的解决方法,虽然很多都是在原有数组上进行操作,没有额外的空间开销,但是时间复杂度也上去了,成了O(n2)O(n^2),而我的代码的时间复杂度是O(n)O(n),只不过是用时间换空间的做法。
贴两个别人的解决方式:
冒泡排序的修改版:这种方式,感觉还不如不用,只不过用时间换空间,太耗时了。。。
插入排序:和前一个方法也差不多,都是O(n2)O(n^2)
相关文章推荐
- js简单登录弹窗
- 20151205 jquery 学习笔记--Ajax
- CSS3之盒相关样式
- HtmlControl与WebControl的区别与用途
- js实践
- Caffe + Ubuntu 15.04 + CUDA 7.0 安装以及配置
- css选择器特异性计算
- JavaScript 计时
- BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
- BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
- xUtils解析json数据
- CSS中margin和padding的区别
- CSS3之文字与字体相关样式
- Day 27: Restify —— 在Node.js中构建正确的REST Web服务
- Day 26: TogetherJS —— 让我们一起来编程!
- Day 23:使用 TimelineJS 构建精美的时间轴
- How to Increase Your Professional Reputation
- 深度学习(二十)基于Overfeat的图片分类、定位、检测-2014 ICLR
- React-Native
- 关于博客系统用户关注功能的实现