题解 | #调整数组顺序使奇数位于偶数前面#

调整数组顺序使奇数位于偶数前面

http://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b

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;
    }
}



全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务