记录一下笔面试中出现的比较简单却又带来了很大麻烦的一些题目。
题目:给一个无序数组,要求实现把奇数放左边,偶数放右边(不要求稳定性)
输入示例:[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;
}
}
运行效果如图
代码有很大的优化和精简的空间,但是由于时间问题
(不,我是懒)在此不做深入研究