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
网友评论