按奇偶排序数组 II

2022-07-28,,,

【LeetCode每日一题】[简单]922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

算法思想:数组

题目:

java代码

两遍遍历:

class Solution {
    public int[] sortArrayByParityII(int[] A) {
		int n = A.length;//长度
        int[] a = new int[n / 2];//记录偶数
        int[] b = new int[n / 2];//记录奇数
        int j = 0;
        int k = 0;
        for (int i = 0; i < n; i++) {//记录原数组中的偶数和奇数
			if (A[i] % 2 == 0) {
				a[j++] = A[i];
			}else {
				b[k++] = A[i];
			}
		}
        j = 0;//指向奇数和偶数
        k = 0;//指向A数组
        while (j < n / 2) {
			A[k++] = a[j];//放入偶数
			A[k++] = b[j];//放入奇数
			j++;
		}
        return A;//返回
    }
}

双指针:

class Solution {
    public int[] sortArrayByParityII(int[] A) {
		int i = 0;//指向偶数
		int j = 1;//指向奇数
		int n = A.length;
		while (i < n && j < n) {
			while (i < n && A[i] % 2 == 0) {//如果是偶数就向后移动
				i += 2;
			}//停止,指向奇数,或者越界
			while (j < n && A[j] % 2 != 0) {//如果是奇数就向后移动
				j += 2;
			}//停止,指向偶数,或者越界
			if (i < n && j < n) {//要确定范围,否则可能存在一个越界问题
				int tmp = A[i];//交换奇数和偶数
				A[i] = A[j];
				A[j] = tmp;
			}
		}
		return A;//返回
    }
}

本文地址:https://blog.csdn.net/qq_39457586/article/details/109641437

《按奇偶排序数组 II.doc》

下载本文的Word格式文档,以方便收藏与打印。