首页 > 试题广场 >

调整数组顺序使奇数位于偶数前面(一)

[编程题]调整数组顺序使奇数位于偶数前面(一)
  • 热度指数:105855 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

数据范围:,数组中每个数的值
要求:时间复杂度 ,空间复杂度
进阶:时间复杂度 ,空间复杂度
示例1

输入

[1,2,3,4]

输出

[1,3,2,4]
示例2

输入

[2,4,6,5,7]

输出

[5,7,2,4,6]
示例3

输入

[1,3,5,6,7]

输出

[1,3,5,7,6]
头像 Maokt
发表于 2021-06-23 15:27:39
精华题解 算法思想一:使用辅助数组 解题思路: 创建两个全新的数组,遍历原数组将其奇数和偶数分别存放在两个数组中,最后将两个数组合并(奇数组放在偶数组前面) 图解: 数组:【1,2,3,4】 步骤 原数组 展开全文
头像 堆栈哲学
发表于 2021-07-15 23:13:18
精华题解 解法一:插入排序思想 记录已经是奇数的位置下标(视作为有序区域),然后向后遍历,一经发现是奇数则进行“插入排序”,然后有序区下标加1。 Java参考代码: import java.util.*; public class Solution { /** * 代码中的类名、方法名、 展开全文
头像 牛客题解官
发表于 2022-04-25 19:08:12
精华题解 题目的主要信息: 给定一个长度为n的无序数组,需要将其中的奇数放到数组前面,偶数放到数组后面 且调整后原来的奇数与奇数之间,偶数与偶数之间的相对位置不能改变 举一反三: 学习完本题的思路你可以解决如下题目: JZ81. 调整数组顺序使奇数位于偶数前面(二) JZ22. 链表中倒数最后k个结点 J 展开全文
头像 大菠萝侦探
发表于 2021-06-22 15:05:21
精华题解 描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 算法 题目要求图解:具体的做法就是把每个数加入符合条件的数组,如下图,橙色代表奇数数组,绿色代表偶数数组,最后再合并两个数组 展开全文
头像 2019113916
发表于 2021-07-18 18:27:12
精华题解 方法一:两次遍历 1.结题思路 简单题,两次遍历原始数组,分别将奇偶数按序加入结果数组 2.解法 遍历两次array数组,第一次遍历时,将所有奇数数组元素加入ans数组,第二次遍历时,将所有偶数数组元素加入ans数组 3.图解 4.具体代码 vector<int> reOrderAr 展开全文
头像 开车的阿Q
发表于 2021-06-19 20:30:54
精华题解 描述 这是一篇面对初级coder的题解。 知识点:队列 指针 排序 难度:二星 题解 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 为 展开全文
头像 2019113913
发表于 2021-07-18 18:39:30
精华题解 题意思路:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 方法一:暴力枚举 遍历一遍数组顺序,使数组中奇数分为一类,偶数分为一类,最后将奇数位于偶数前面 复杂度分析 时间复杂度: 展开全文
头像 牛客500979850号
发表于 2021-07-15 21:26:45
精华题解 方法一: 暴力方法,有较大改进空间。使用两个额外数组,分别用来存奇数和偶数,遍历原数组,根据数的奇偶将其存入不同的数组,最后将两个数组整合到一起即可。class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 展开全文
头像 牛哄哄是假的
发表于 2021-02-26 17:19:07
题意:区分出奇数和偶数,按照原顺序奇数偶数顺序不变我的思路:开辟两组新的空间,我这里用的是LinkedList,因为想要用到队列的先进先出方法 1、先找出奇数利用2余某个数不为零就是奇数(这里不考虑0的情况),那么余2是0那就是偶数啦2、然后奇数放在一个链表里面,偶数放在一个链表里面。链表不需要事先 展开全文
头像 牛客709025891号
发表于 2021-04-14 15:21:58
头尾双指针,一次遍历,头处理奇数,尾处理偶数;时间复杂度:O(N)空间复杂度:O(N) public int[] reOrderArray (int[] array) { // write code here //双指针,头尾指针 int[] nums 展开全文
头像 咪咪虾条001
发表于 2021-02-26 18:49:59
使用插入排序的思想 记录已经是奇数的位置下标(视作为有序区域),然后向后遍历,一经发现是奇数则进行“插入排序”,然后有序区下标加1。具体代码如下: import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数 展开全文
头像 1666
发表于 2021-03-27 17:00:39
//解题思路 /*(O(n),O(n)) 遍历两次数组,第一次只添加奇数到新数组里,第二次只添加奇数到新数组里 */ public int[] reOrderArray (int[] array) { int index = 0; int[] res = new int[arra 展开全文
头像 jieleejie
发表于 2021-03-22 00:56:13
基本思路:利用冒泡的思想,碰到奇数则往前移 利用nthOdd来记录当前是第n个奇数,nthOdd初始化为-1,碰到第一个奇数,nthOdd自增为0,刚好对应数组下标。循环一趟,若碰到奇数,则nthOdd+1,接着把该奇数前面的偶数都往后移,将该奇数放到第nthOdd位。 function reOrd 展开全文
头像 小陆要懂云
发表于 2021-08-17 21:17:57
使用STL和Lambda vector<int> reOrderArray(vector<int>& array) { // write code here stable_partition(array.begin(), arr 展开全文
头像 学编程的蒟蒻
发表于 2022-03-03 17:50:09
直接用vector里的函数就好 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @r 展开全文
头像 牛客877483763号
发表于 2021-12-15 15:18:47
调整数组顺序使奇数位于偶数前面(一) 输入一个长度为 n 整数数组,数组里面不含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 数据范围:0≤n≤5000,数组中每个数的值 0≤va 展开全文
头像 李东蔚
发表于 2021-09-23 15:15:07
import java.util.*; public class Solution { /** * 暴力解法 * * * @param array int整型一维数组 * @return int整型一维数组 */ 展开全文
头像 勤奋的猫
发表于 2022-03-05 15:22:26
import java.util.*; public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定, 展开全文