美文网首页
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