当前位置:网站首页>#yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)

#yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)

2022-06-24 12:49:00 51CTO

1.简述:

描述

输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。

数据范围:#yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)_i++,数组中每个数的值 #yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)_时间复杂度_02要求:时间复杂度 #yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)_数组_03,空间复杂度 #yyds干货盘点# 解决剑指offer:调整数组顺序使奇数位于偶数前面(二)_i++_04

示例1

输入:

      
      
[1,2,3,4]
  • 1.

返回值:

      
      
[1,3,2,4]
  • 1.

说明:

      
      
[3,1,2,4]或者[3,1,4,2]也是正确答案
  • 1.

示例2

输入:

      
      
[1,3,5,6,7]
  • 1.

返回值:

      
      
[1,3,5,7,6]
  • 1.

说明:

      
      
[3,1,5,7,6]等也是正确答案
  • 1.

示例3

输入:

      
      
[1,4,4,3]
  • 1.

返回值:

      
      
[1,3,4,4]
  • 1.

2.代码实现:

      
      
import java.util.*;
public class Solution {
public int[] reOrderArrayTwo (int[] array) {
//双指针
int i = 0;
int j = array.length - 1;
//向中间聚合
while(i < j){
//左右都是奇数,左移右不动
if(array[i] % 2 == 1 && array[j] % 2 == 1)
i++;
//左奇数右偶数,左右都向中间缩
else if(array[i] % 2 == 1 && array[j] % 2 == 0){
i++;
j--;
}
//左偶右奇数
else if(array[i] % 2 == 0 && array[j] % 2 == 1){
//交换
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
//左右都是偶数,只移动右指针
else
j--;
}
return array;
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15488507/5414003