美文网首页
3、按奇偶排序数组

3、按奇偶排序数组

作者: ZeroForSpider | 来源:发表于2018-10-23 23:36 被阅读14次

1、题目如下:
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。

你可以返回满足此条件的任何数组作为答案。

示例:

输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。

提示:

1 <= A.length <= 5000
0 <= A[i] <= 5000

2、代码如下:

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int oldLength=A.length;
        int[] newArray=new int[oldLength];
        int j=0;
        oldLength--;
        for(int i=0;i<A.length;i++){
            if(A[i]%2==0){
                newArray[j++]=A[i];
            }else{
                newArray[oldLength--]=A[i];
            }
        }
        return newArray;
    }
}

public class MainClass {
    public static int[] stringToIntegerArray(String input) {
        input = input.trim();
        input = input.substring(1, input.length() - 1);
        if (input.length() == 0) {
          return new int[0];
        }
    
        String[] parts = input.split(",");
        int[] output = new int[parts.length];
        for(int index = 0; index < parts.length; index++) {
            String part = parts[index].trim();
            output[index] = Integer.parseInt(part);
        }
        return output;
    }
    
    public static String integerArrayToString(int[] nums, int length) {
        if (length == 0) {
            return "[]";
        }
    
        String result = "";
        for(int index = 0; index < length; index++) {
            int number = nums[index];
            result += Integer.toString(number) + ", ";
        }
        return "[" + result.substring(0, result.length() - 2) + "]";
    }
    
    public static String integerArrayToString(int[] nums) {
        return integerArrayToString(nums, nums.length);
    }
    
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = in.readLine()) != null) {
            int[] A = stringToIntegerArray(line);
            
            int[] ret = new Solution().sortArrayByParity(A);
            
            String out = integerArrayToString(ret);
            
            System.out.print(out);
        }
    }
}

3、解题思路如下:
本题目的意思就是将一个数组中的奇偶数字选出来,并把偶数放在数组的前半部分,奇数放在数组的后半部分。无需在意偶数序列和奇数序列中的顺序问题。所以只需要定义一个新数组用于存放偶数序列和奇数序列。当遍历原数组时只需要判断当前数字是否为偶数,若是偶数则放在数组前半部分,用变量j控制,若不是偶数则放在数组的后半部分。从数组最后一个位置向前存。用变量oldLength控制。最后返回这个新数组即可。

4、运行结果如下:


image.png

相关文章

网友评论

      本文标题:3、按奇偶排序数组

      本文链接:https://www.haomeiwen.com/subject/sbbazftx.html