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

【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;//返回
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39457586/article/details/109641437
今日推荐