欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

按奇偶排序数组 II

程序员文章站 2022-05-18 17:34:45
【LeetCode每日一题】[简单]922. 按奇偶排序数组 II922. 按奇偶排序数组 II922. 按奇偶排序数组 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];//...

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

922. 按奇偶排序数组 II

922. 按奇偶排序数组 II

算法思想:数组

题目:

按奇偶排序数组 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