牛客网 剑指offer-调整数组顺序使奇数位于偶数前面
来源:互联网 发布:数据不会说谎 编辑:程序博客网 时间:2024/06/04 00:49
问题描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
问题分析:这道题是我看通过的代码做出来的,在看了别人的思路之后,有一种恍然大悟的感觉,同时,也感到编程的乐趣。在这里主要分析两种思路:
方法一:类似冒泡算法,前偶后奇数就交换
代码如下:
public class Solution { public void reOrderArray(int [] array) { for(int i = 0; i <array.length - 1; i++){ for(int j = 0; j < array.length - 1; j++){ if(array[j] % 2 == 0 && array[j + 1] % 2 ==1){ int t = array[j]; array[j] = array[j + 1]; array[j + 1] = t; } } } }}
方法二:首先统计奇数的个数,然后新建一个等长数组,设置两个指针,奇数指针从0开始,偶数指针从奇数个数的末尾开始 遍历,填数。代码如下:
public class Solution { public void reOrderArray(int [] array) { if(array.length == 0 || array.length == 1){ return ; } int num = 0; int startIndex = 0; int[] newArray = new int[array.length]; for(int i = 0; i < array.length; i++){ if(array[i] % 2 == 1) num++; } for(int i = 0; i < array.length; i++){ if(array[i] % 2 == 1){ newArray[startIndex++] = array[i]; }else{ newArray[num++] = array[i]; } } for(int i = 0; i < array.length; i++){ array[i] = newArray[i]; } }}
阅读全文
0 0
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指 offer:调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- [剑指offer]调整数组顺序使奇数位于偶数前面
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 剑指offer|调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指Offer:调整数组顺序使奇数位于偶数前面
- 剑指offer - 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 链表问题——打印两个有序链表的公共部分
- 坚持#第192天~云计算原来是用来保存数据的
- 杭电acm2133 今天星期几
- eclipse安装过程的一些问题及解决方法
- SQL语句基础指令语法
- 牛客网 剑指offer-调整数组顺序使奇数位于偶数前面
- [leetcode] 100. Same Tree
- linux基本命令笔记
- 前端基础知识汇总
- ==和equals方法区别究竟在哪?
- Week3 207. Course Schedule
- 线段树合并 [HNOI2012]永无乡
- Lovekey(大数)
- Windows下pygame安装