牛客网刷题(JAVA) 10:调整数组顺序使奇数位于偶数前面

难度系数 ⭐

时间限制 C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

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

思路 遍历数组,分别将奇数和偶数顺序记下,然后依次将奇数和偶数重新填入数组种。注意,使用随机快排无法实现次序不变。

package nowcoder;

import java.util.ArrayList;
import java.util.Arrays;

public class No10 {
    public static void reOrderArray(int [] array) {
        ArrayList<Integer> f1 = new ArrayList<>();
        ArrayList<Integer> f2 = new ArrayList<>();

        for (int value : array) {
            if (value % 2 == 1) f1.add(value);
            else f2.add(value);
        }

        int i = 0;

        for (int value : f1)
            array[i++] = value;
        for (int value : f2)
            array[i++] = value;
    }

    public static void main(String[] args){
        int [] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        reOrderArray(arr);
        System.out.println(Arrays.toString(arr));
    }
}
发布了149 篇原创文章 · 获赞 36 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Dorothy_Xue/article/details/105442969
今日推荐