题解 | 调整数组顺序使奇数位于偶数前面(一)
调整数组顺序使奇数位于偶数前面(一)
https://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @param arrayLen int array数组长度
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* reOrderArray(int* array, int arrayLen, int* returnSize ) {
// write code here
int n=0;
for(int i=0; i<arrayLen; i++){
if(array[i]%2 != 0)
{
n++; // 统计奇数的个数
}
}
int* result = (int*)malloc(arrayLen*sizeof(int));
// 这样不对 int result[arrayLen];
int x=0; // 不能直接使用数组索引i
int y=n;
for(int i=0; i<arrayLen; i++){
if(array[i]%2!=0){
result[x++]=array[i];
}else{
result[y++]=array[i];
}
}
*returnSize = arrayLen;
return result;
}
解题思路:
step 1:遍历数组,统计奇数出现的次数,即找到了偶数开始的位置。 step 2:准备一个和原数组同样长的新数组承接输出,准备双指针,x指向奇数开始的位置,y指向偶数开始的位置。 step 3:遍历原数组,遇到奇数添加在指针x后面,遇到偶数添加在指针y后面,直到遍历结束。
#保研机试#
查看18道真题和解析
