按奇偶排序数组 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
算法思想:数组
题目:
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
上一篇: 脾肾阳虚怎么食疗调理 这些食谱要get
下一篇: 番石榴的作用与功效 你知道吗