1.题目描述
给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
你可以返回 任何满足上述条件的数组作为答案 。
示例 1:
输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
示例 2:
输入:nums = [2,3]
输出:[2,3]
2.知识点
(1)这道题主要是要满足 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
(2)也就是说索引i=1,3,5,7位置上的元素应该为奇数,
索引i=2,4,5,6位置上的元素应该为偶数。
(3)总体思路就是创建一个新的数组,再遍历旧数组,旧数组里面满足元素是奇数的,将计数器+2。(索引从1开始)
旧数组里面满足元素是偶数的,将计数器+2(索引从0开始)
3.代码实现
class Solution {
public int[] sortArrayByParityII(int[] nums) {
int[] result=new int[nums.length];
int oushuIndex=0;
int jishuIndex=1;
for(int num:nums)//遍历旧数组
{
if(num%2==0)
{
result[oushuIndex]=num;
oushuIndex=oushuIndex+2;
}
else
{
result[jishuIndex]=num;
jishuIndex=jishuIndex+2;
}
}
return result;
}
}