NC77. 调整数组顺序使奇数位于偶数前面(一)
描述
示例1
输入:
[1,2,3,4]
输出:
[1,3,2,4]
示例2
输入:
[2,4,6,5,7]
输出:
[5,7,2,4,6]
示例3
输入:
[1,3,5,6,7]
输出:
[1,3,5,7,6]
C 解法, 执行用时: 3ms, 内存消耗: 412KB, 提交时间: 2022-08-07
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ int* reOrderArray(int* array, int arrayLen, int* returnSize ) { // write code here // base int *odd = (int *)malloc(sizeof(int) * arrayLen); int *even = (int *)malloc(sizeof(int) * arrayLen); int odd_idx = 0, even_idx = 0; *returnSize = arrayLen; for (int i = 0; i < arrayLen; i++) { if (array[i] % 2 == 1) { odd[odd_idx] = array[i]; odd_idx++; } else { even[even_idx] = array[i]; even_idx++; } } for (int i = odd_idx; i < arrayLen; i++) { odd[i] = even[i - odd_idx]; } return odd; }
C++ 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-04-27
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArray(vector<int>& array) { vector<int> odd; vector<int> even; vector<int> ans; for(int i=0;i<array.size();++i){ if(array[i]%2==1) odd.push_back(array[i]); else even.push_back(array[i]); } ans.insert(ans.end(),odd.begin(),odd.end()); ans.insert(ans.end(),even.begin(),even.end()); return ans; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-02-24
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArray(vector<int>& array) { // write code here int i = 0, j, k; int size = array.size(); for (j = 0; j < size; j++) { if (array[j] % 2) { int tmp = array[j]; for (k = j-1; k >= i; k--) { array[k+1] = array[k]; } array[i] = tmp; i++; } } return array; } };
C 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2021-12-24
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ int* reOrderArray(int* array, int arrayLen, int* returnSize ) { int ji[2500]={0}; int ou[2500]={0}; int ji_count=0; int ou_count=0; for(int i=0;i<arrayLen;i++) { if(array[i]%2 == 0) { ou[ou_count++] = array[i]; } else { ji[ji_count++] = array[i]; } } for(int i=0;i<ji_count;i++) { array[i] = ji[i]; } for(int i=0;i<ou_count;i++) { array[i+ji_count] = ou[i]; } *returnSize = arrayLen; return array; }
C++ 解法, 执行用时: 3ms, 内存消耗: 424KB, 提交时间: 2022-06-14
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArray(vector<int>& array) { // write code here vector<int> arr; for(auto it :array) { if(it%2==1) arr.push_back(it); } for(auto it :array) { if(it%2==0)arr.push_back(it); } return arr; } };