推荐
完整《剑指Offer》算法题解析系列请点击 👉 《剑指Offer》全解析 Java 版
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
public class Solution {
public void reOrderArray(int [] array) {
}
}
思路:
先计算出数组中的奇数的个数,记作 num ;
然后复制一个原数组,遍历复制的数组,判断奇数和偶数,并放入原数组;
奇数从下标0开始放,偶数从下标num开始放。
遍历完之后,原数组的数,就变成了奇数在前,偶数在后了。并且奇数和奇数,偶数和偶数的相对位置不变。
实现:
public class Solution {
public void reOrderArray(int [] array) {
int oddNum = 0; //奇数个数
for (int x : array)
if (!isEven(x))
oddNum++;
int[] copy = array.clone();
int i = 0, j = oddNum;
for (int num : copy){
if (num % 2 == 1)
array[i++] = num;
else
array[j++] = num;
}
}
//判断是否是偶数
private boolean isEven(int x){
return x % 2 == 0;
}
}
看完之后,如果还有什么不懂的,可以在评论区留言,会及时回答更新。
这里是猿兄,为你分享程序员的世界。
非常感谢各位大佬们能看到这里,如果觉得文章还不错的话, 求点赞👍 求关注💗 求分享👬求评论📝 这些对猿兄来说真的 非常有用!!!
注: 如果猿兄这篇博客有任何错误和建议,欢迎大家留言,不胜感激!