首页IT科技数组中所有奇数在前偶数在后(每日算法之调整数组顺序使奇数位于偶数前面(一))

数组中所有奇数在前偶数在后(每日算法之调整数组顺序使奇数位于偶数前面(一))

时间2025-08-05 09:38:02分类IT科技浏览5647
导读:JZ21 调整数组顺序使奇数位于偶数前面(一 描述 输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。...

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

描述

输入一个长度为 n 整数数组                ,实现一个函数来调整该数组中数字的顺序                        ,使得所有的奇数位于数组的前面部分        ,所有的偶数位于数组的后面部分            ,并保证奇数和奇数                        ,偶数和偶数之间的相对位置不变                。

思路:

既然要把所有的奇数放在数组前面            ,所有的偶数放在数组后面        ,那可以统计奇数在原数组中出现了多少次                        ,这样就可以找到二者的分界线                        。 有了分界线以后                ,前面就是奇数    ,后面就是偶数                        ,可以利用两个指针分别指向二者的开头                    ,遇到一个元素就添加到相应位置,然后指针移动        。 具体做法: step 1:遍历数组                    ,统计奇数出现的次数                        ,即找到了偶数开始的位置            。 step 2:准备一个和原数组同样长的新数组承接输出    ,准备双指针                ,x指向奇数开始的位置                        ,y指向偶数开始的位置                        。 step 3:遍历原数组        ,遇到奇数添加在指针x后面            ,遇到偶数添加在指针y后面                        ,直到遍历结束            。

代码

package mid.JZ21调整数组顺序使奇数位于偶数前面1; import jdk.nashorn.internal.ir.CallNode; import sun.awt.geom.AreaOp; import java.util.*; public class Solution { /** * 代码中的类名                、方法名                        、参数名已经指定            ,请勿修改        ,直接返回方法规定的值即可 * * @param array int整型一维数组 * @return int整型一维数组 */ public int[] reOrderArray(int[] array) { // write code here if (array == null || array.length == 0) return new int[0]; int[] res = new int[array.length]; int right = 0; for (int i = 0; i < array.length; i++) { if ((array[i] & 1) != 0) right++; } int left = 0; for (int i = 0; i < array.length; i++) { if ((array[i] & 1) == 0) { res[right] = array[i]; right++; } else { res[left] = array[i]; left++; } } return res; } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
对称加密的简称(一、对称加密(DES加密)) php手机验证码验证(phpcms怎么去掉验证码)