- 法一:复制,将奇数复制到下标(0-奇数数量),偶数复制到下标(奇数数量-总长度)
- 法二:双指针,类比快速排序,左侧找到left,右侧找到right,交换值j
牛客网题目链接
法一:复制,将奇数复制到下标(0-奇数数量),偶数复制到下标(奇数数量-总长度) 法二:双指针,类比快速排序,左侧找到left,右侧找到right,交换值jimport java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArrayTwo (int[] array) {
// write code here
// // 法一:复制
// // write code here
// int n = array.length;
// int []result = new int[n];
// int count = 0; //统计奇数个数
// for(int i = 0; i < n; i++){ //遍历统计
// if(array[i] % 2 == 1)
// count++;
// }
// int x = 0, y = count; //x与y分别表示答案中奇偶数的坐标
// for(int i = 0; i < n; i++){
// if(array[i] % 2 == 1){ //奇数在前
// result[x] = array[i];
// x++;
// }else{ //偶数在后
// result[y] = array[i];
// y++;
// }
// }
// return result;
// 法二:双指针
int left=0,right=array.length-1;
while(left<right){
while(left<right && array[left]%2==1){
left++;
}
while(left<right && array[right]%2==0){
right--;
}
if(left<right)
{
int temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
return array;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)