- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/CodingInterviewChinese2
- 文章地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
前言
书上这道题没要求相对位置不变,所以这道题我们以牛客网为准,毕竟有测试平台。
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路
方法一:
类似冒泡算法,前偶后奇就交换。时间复杂度O(n^2)。
方法二:
空间换时间,再创建一个数组,或者双向队列。时间复杂度O(n),空间复杂度O(n)。
方法三:
双向队列,一次循环插入。
C++版代码实现:
冒泡
1 | class Solution { |
新建数组
1 | class Solution { |
双向队列
1 | class Solution { |
Python 代码实现:
冒泡:
1 | # -*- coding:utf-8 -*- |
新建列表
1 | # -*- coding:utf-8 -*- |
双向队列
1 | # -*- coding:utf-8 -*- |
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz