NC286. 调整数组顺序使奇数位于偶数前面(二)
描述
示例1
输入:
[1,2,3,4]
输出:
[1,3,2,4]
说明:
[3,1,2,4]或者[3,1,4,2]也是正确答案示例2
输入:
[1,3,5,6,7]
输出:
[1,3,5,7,6]
说明:
[3,1,5,7,6]等也是正确答案示例3
输入:
[1,4,4,3]
输出:
[1,3,4,4]
C++ 解法, 执行用时: 9ms, 内存消耗: 1552KB, 提交时间: 2022-01-12
const static auto sync_off = []{ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArrayTwo(vector<int>& array) { // write code here for(int i=0,j=array.size()-1;i<j;) { if(!(array[i]&1)) { swap(array[i],array[j--]); } else if(array[j]&1) { swap(array[j], array[i++]); } else{ ++i,--j; } } return array; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 1540KB, 提交时间: 2022-04-04
const static auto sync_off = []{ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArrayTwo(vector<int>& array) { // write code here int pl = 0, pr = array.size()-1; while(pl < pr){ if(!(array[pl] & 1)){ swap(array[pl], array[pr]); --pr; } else if(array[pr] & 1){ swap(array[pl], array[pr]); ++pl; } else{ ++pl, --pr; } } return array; } };
C 解法, 执行用时: 11ms, 内存消耗: 1428KB, 提交时间: 2022-01-17
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) { // write code here int low = 0; int high = arrayLen - 1; while(low < high){ while((array[low] &1) != 0) low++; while((array[high] &1) == 0) high--; if (low < high){ int tmp = 0; tmp = array[low]; array[low] = array[high]; array[high] = tmp; } } *returnSize = arrayLen; return array; }
C 解法, 执行用时: 11ms, 内存消耗: 1436KB, 提交时间: 2021-10-22
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) { // write code here int i=0; int j=arrayLen-1; int temp = 0; while(j>i) { if(array[i]%2 != 0) { i++; continue; } if (array[j]%2 == 0) { j--; continue; } temp = array[i]; array[i] = array[j]; array[j] = temp; } *returnSize = arrayLen; return array; }
C 解法, 执行用时: 11ms, 内存消耗: 1460KB, 提交时间: 2022-02-09
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) { // write code here int i,j,k,temp; int *p,*q; *returnSize=arrayLen; i=0; k=arrayLen-1; p=q=array; while(i<k) { while(p[i]%2!=0) i++; while(q[k]%2==0) k--; if(i<k) { temp=p[i]; p[i]=q[k]; q[k]=temp; } } return array; }