面试题:给一个无序数组,要求实现把奇数放左边,偶数放右边(不要求稳定性)

记录一下笔面试中出现的比较简单却又带来了很大麻烦的一些题目。

题目:给一个无序数组,要求实现把奇数放左边,偶数放右边(不要求稳定性)
输入示例:[4,1,2,7,3,5,8] 输出示例:[5,1,3,7,2,4,8] (可能得到的结果不相同)
来源:字节跳动后端开发一面

java代码实现

/**
 * @Description 面试题:给一个无序数组,实现把奇数放左边,偶数放右边
 * @Author shendongjian
 * @CreateTime 2019/7/24 10:38
 */
public class SwapArray {
    private static int[] arr = {4,1,2,7,3,5,8};
    public static void main(String[] args){
        int left = 0,right = arr.length-1;
        while(left < right){
            while(arr[left] % 2 == 1){
                left++;
            }
            while(arr[right] % 2 == 0){
                right--;
            }
            if(left < right){
                swap(arr,left,right);
            }
        }
        for(int num:arr){
            System.out.print(num+"\t");
        }
    }

    private static void swap(int[] arr,int a,int b){
        int tmp = arr[a];
        arr[a] = arr[b];
        arr[b] = tmp;
    }
}

运行效果如图
面试题:给一个无序数组,要求实现把奇数放左边,偶数放右边(不要求稳定性)_第1张图片

代码有很大的优化和精简的空间,但是由于时间问题 (不,我是懒) 在此不做深入研究

你可能感兴趣的:(笔面试题)