1.python 解法:本来使用了一种不用开辟新的空间,但是移动次数比较多的解法,奈何时间超标了。所以又换了一个简单的解法,简单来说就是先分奇数偶数然后再合并。
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 # @return int整型一维数组 # class Solution: def reOrderArray(self , array ): # write code here even_list, odd_list = [], [] for num in array: if num%2:odd_list.append(num) else:even_list.append(num) odd_list.extend(even_list) return odd_list
2.go解法:使用双指针,还要额外开辟一片内存,但是速度要快很多。
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
import "fmt"
func reOrderArray( array []int ) []int {
// write code here
res := make([]int, len(array))
head, ptr_head := 0,0
tail, ptr_tail := len(array)-1, len(array)-1
for ptr_head<=len(array)-1 && ptr_tail>=0 {
if array[ptr_head]%2 == 1{
res[head] = array[ptr_head]
head ++
}
if array[ptr_tail]%2 == 0{
res[tail] = array[ptr_tail]
tail --
}
ptr_head ++
ptr_tail --
}
fmt.Printf("%v", res)
return res
}
3.java解法:和python类似,但是写起来就要麻烦很多。 import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArray (int[] array) {
// write code here
ArrayList<Integer> odd_lst = new ArrayList();
ArrayList<Integer> even_lst = new ArrayList();
for(int i = 0; i<array.length;i++){
if(array[i]%2 == 1){
odd_lst.add(array[i]);
}
else{
even_lst.add(array[i]);
}
}
//int[array.length] res;
//System.out.println(odd_lst);
for(int i=0; i<array.length; i++){
if(i<odd_lst.size()){
array[i] = odd_lst.get(i);
}else{
array[i] = even_lst.get(i-odd_lst.size());
}
}
return array;
}
} 
京公网安备 11010502036488号