题解 | 调整数组顺序使奇数位于偶数前面(一)
调整数组顺序使奇数位于偶数前面(一)
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后面,直到遍历结束。
#保研机试#