设为首页 加入收藏

TOP

每日算法之调整数组顺序使奇数位于偶数前面(一)
2023-07-25 21:35:59 】 浏览:11
Tags:数位 于偶数

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;
    }
    
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SaaS 营销怎么做?几点思考 下一篇Java生产者消费者

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目