922. 按奇偶排序数组 II『简单』

2021-05-06 13:27

阅读:387

标签:改变   strong   tar   执行   mic   解题思路   tco   set   java   

题目来源于力扣(LeetCode)

目录
  • 一、题目
  • 二、解题思路
    • 2.1 新数组存储方式
    • 2.2 奇偶替换方式
  • 三、代码实现
    • 3.1 新数组存储方式
    • 3.2 奇偶替换方式
  • 四、执行用时
    • 3.1 新数组存储方式
    • 3.2 奇偶替换方式
  • 五、部分测试用例

一、题目

922. 按奇偶排序数组 II

题目相关标签:排序、数组

技术图片

提示:

  • 2
  • A.length % 2 == 0
  • 0

二、解题思路

2.1 新数组存储方式

  1. 创建与数组 A 相同长度的新数组用于保存元素

  2. 定义两个变量,用于记录往新数组中插入元素的索引

  3. 遍历数组 A,判断当前遍历元素的奇偶性

  4. 奇数时,往新数组的奇数索引上插入该元素,同时索引 + 2

  5. 偶数时,往新数组的偶数索引上插入该元素,同时索引 + 2

  6. 返回新数组

2.2 奇偶替换方式

  1. 无需额外空间,即创建新数组来记录结果的方式

  2. 定义变量用于记录奇数元素所在的索引 j,默认为 1,即数组中最小的奇数位

  3. 遍历数组的偶数位,判断当前遍历元素是否为偶数

  4. 不为偶数时,则通过索引 j 循环找到数组中在奇数位上却是偶数的元素

  5. 找到后,交换两个元素,实现奇数位索引上存储奇数元素,偶数位索引上存储偶数元素

索引 j 每次加 2 是不会越界的,因为数组长度为偶数,且元素一半为奇数,一半为偶数

三、代码实现

3.1 新数组存储方式

public static int[] sortArrayByParityII2(int[] A) {
    int[] nums = A;
	// 创建新数组存储结果
    int[] res = new int[nums.length];
    // 偶数索引位
    int i = 0;  
    // 奇数索引位
    int j = 1;  
    for (int k = 0; k 

3.2 奇偶替换方式

public static int[] sortArrayByParityII3(int[] A) {
    int[] nums = A;
    // 维护奇数元素的索引
    int j = 1;
	// 遍历数组的偶数位元素:0 2 4...
    for (int i = 0; i 

四、执行用时

3.1 新数组存储方式

技术图片

3.2 奇偶替换方式

技术图片

五、部分测试用例

public static void main(String[] args) {
    int[] nums = {4, 2, 5, 7};  // output: {4, 5, 2, 7}

    int[] result = sortArrayByParityII3(nums);
    System.out.println(Arrays.toString(result));
}

922. 按奇偶排序数组 II『简单』

标签:改变   strong   tar   执行   mic   解题思路   tco   set   java   

原文地址:https://www.cnblogs.com/zhiyin1209/p/13189872.html


评论


亲,登录后才可以留言!