Leetcode 922. Sort Array By Parity II
题目链接: Sort Array By Parity II
难度:easy
题目大意:
输入一组数,有一半是奇数,一半是偶数,将奇数放在数组下标为奇数的位置上,偶数放在数组下标为偶数的位置上。如果有多种情况,返回一种情况即可。
思路:
暴力解法:
新建一个数组,对原数组进行遍历,如果是奇数,就放在下标为奇数的位置上,否则放在下标为偶数的位置上。
大佬解法:
如果数组元素不在正确的位置上,通过交换数组元素的位置来使数组满足题意。
代码
暴力解法
class Solution {
public int[] sortArrayByParityII(int[] A) {
int[] res=new int[A.length];
int even=0;
int odd=1;
for(int a:A){
if(a%2==0){
res[even]=a;
even+=2;
}
else{
res[odd]=a;
odd+=2;
}
}
return res;
}
}
大佬解法
class Solution {
public int[] sortArrayByParityII(int[] A) {
int even=0;
int odd=1;
int len=A.length-1;
while(true){
while(even<=len&&A[even]%2==0){//注意两个判断条件的顺序不能颠倒
even+=2;
}
while(odd<=len&&A[odd]%2!=0){
odd+=2;
}
if(even>len||odd>len){
break;
}
int item=A[even];
A[even]=A[odd];
A[odd]=item;
even+=2;
odd+=2;
}
return A;
}
}