剑指offer系列:调整数组顺序使奇数位于偶数前面

描述

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

代码

public class Solution {
    public void reOrderArray(int [] array) {
        int doublenum=0;
        for(int i=0;i<array.length-1;i++){
            
            if(array[i]%2==0){
                doublenum++;
            }
            if(doublenum!=0&array[i+1]%2!=0){
                int cur=array[i+1];
                // 1 2 3 4 5 6 7
                // 1 3 2 4 5 6 7
                // 
                for(int j=i;j>=i-doublenum+1;j--){
                    array[j+1]= array[j];
                }
                array[i-doublenum+1]=cur;
                doublenum--;
            }
        }
    }
}

新得

这道题的关键在于什么时候移位,并且移动几位,
移位的要求 :该数为奇数,且前面至少有1个偶数
移动几位:将该数前面的偶数依次后移1位,将该数前移 前面的偶数个数 位

发布了131 篇原创文章 · 获赞 144 · 访问量 31万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章