力扣 905. 按奇偶排序数组 && 922. 按奇偶排序数组 II

905题目描述:

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。

解析:

alt

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 也是偶数。
你可以返回任何满足上述条件的数组作为答案。

解析:

alt

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;
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务