美文网首页皮皮的LeetCode刷题库
【剑指Offer】013——调整数组顺序使奇数位于偶数前面 (数

【剑指Offer】013——调整数组顺序使奇数位于偶数前面 (数

作者: 就问皮不皮 | 来源:发表于2019-08-18 12:59 被阅读0次

    题目描述

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

    解题思路

    最简单的方法就是把奇数和偶数按顺序挑出来,分别放到vector里,最后再把偶数的vector接到奇数vector的末尾。当然这样是需要O(n)的辅助空间的。如果不能开僻额外的空间,可以尝试有类似于冒泡排序的方法,如果当前的值为偶数,后一个值为奇数,则两个数对换位置。

    参考代码

    Java

    public class Solution {
            public void reOrderArray(int[] array) {
                for (int i = 0; i < array.length; i++) {
                    for (int j = 0; j < array.length - 1 - i; j++) {
                        if (array[j] % 2 == 0 && array[j + 1] % 2 == 1) {
                            int temp = array[j];
                            array[j] = array[j + 1];
                            array[j + 1] = temp;
                        }
                    }
                }
    
            }
        }
    

    Python

    class Solution:
        def reOrderArray(self, array):
            if array is not None:
                arrayLen = len(array)
                for i in range(0, arrayLen):
                    for j in range(0, arrayLen - 1):
                        if array[j]%2==0 and array[j+1]%2 == 1:
                            array[j],array[j+1] = array[j+1],array[j]
            return array
    

    个人订阅号

    image

    相关文章

      网友评论

        本文标题:【剑指Offer】013——调整数组顺序使奇数位于偶数前面 (数

        本文链接:https://www.haomeiwen.com/subject/wosrsctx.html