题目来源:
leetcode题目,网址:922. 按奇偶排序数组 II - 力扣(LeetCode)
解题思路:
i 指针从前往后寻找 i (nums[i])为偶数的奇数,j 指针从前往后寻找 i (nums[i])为奇数位的偶数,交换 i ,j 指针找到的数,最后返回即可。
解题代码:
class Solution {
public int[] sortArrayByParityII(int[] nums) {
for(int i=0,j=1;i<nums.length && j<nums.length;){
while(i<nums.length && nums[i]%2==0){
i=i+2;
}
while(j<nums.length && nums[j]%2!=0){
j=j+2;
}
if(i<nums.length && j<nums.length){
nums[i]=nums[i]^nums[j];
nums[j]=nums[i]^nums[j];
nums[i]=nums[i]^nums[j];
}
i=i+2;
j=j+2;
}
return nums;
}
}
总结:
官方题解给出了两次遍历和双指针的解法。