力扣 905. 按奇偶排序数组 && 922. 按奇偶排序数组 II
905题目描述:
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
解析:
1.定义两个指针i和j,分别从数组左右两侧向中间遍历,分为四种情况
当i指的值为偶数,j指的值为奇数,则i++,j--
当i指的值为偶数,j指的值为偶数,则i++ 当i指的值为奇数,j指的值为奇数,则j--
当i指的值为奇数,j指的值为偶数,则i指的值和j指的值进行互换,然后i++,j--
2.最后返回数组nums即可
Java:
public int[] sortArrayByParity(int[] nums) {
int i = 0, j = nums.length - 1;
while(i < j) {
if(nums[i] % 2 == 1 && nums[j] % 2 == 0) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
if(nums[i] % 2 == 0) {
i++;
}
if(nums[j] % 2 == 1) {
j--;
}
}
return nums;
}
JavaScript:
var sortArrayByParity = function(nums) {
let i = 0, j = nums.length - 1;
while(i < j) {
if(nums[i] % 2 === 1 && nums[j] % 2 === 0) {
[nums[i], nums[j]] = [nums[j], nums[i]];
}
if(nums[i] % 2 === 0) {
i++;
}
if(nums[j] % 2 === 1) {
j--;
}
}
return nums;
};
922题目描述:
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。
解析:
1.定义两个指针i和j,i指向数组的第一个值,j指向数组的第二个值
2.for循环用指针i遍历数组,每次i=i+2,如果指针i指的值为奇数时,并且当指针j指的值为奇数时,则j=j+2
否则指针i指的值和指针j指的值进行互换
3.最后返回数组nums即可
Java:
public int[] sortArrayByParityII(int[] nums) {
int j = 1;
for(int i = 0; i < nums.length; i += 2) {
if(nums[i] % 2 == 1) {
while(nums[j] % 2 == 1 && j < nums.length) {
j += 2;
}
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
return nums;
}
JavaScript:
var sortArrayByParityII = function(nums) {
let j = 1;
for(let i = 0; i < nums.length - 1; i += 2) {
if(nums[i] % 2 === 1) {
while(nums[j] % 2 === 1 && j < nums.length) {
j += 2;
}
[nums[i], nums[j]] = [nums[j], nums[i]];
}
}
return nums;
};