返回

1470. 重新排列数组:解题思路与代码实现

后端

题目

给定一个数组 nums,将其重新排列成「奇数偶数」交替排列的顺序。

示例 1:

输入:nums = [1,2,3,4,5,6,7]
输出:[1,3,5,7,2,4,6]
解释:重新排列后的数组中,奇数和偶数以交替方式排列。

示例 2:

输入:nums = [1,0]
输出:[1,0]
解释:重新排列后的数组中,唯一一个奇数和偶数已经以交替方式排列。

提示:

  • 1 <= nums.length <= 5000
  • 0 <= nums[i] <= 5000

解题思路

这道题的解题思路非常简单,我们可以遍历数组,将奇数和偶数分别放置在两个不同的数组中,最后再将这两个数组交替合并即可。

具体步骤如下:

  1. 初始化两个空数组,分别用于存储奇数和偶数。
  2. 遍历给定的数组,对于每个元素:
    • 如果元素是奇数,则将其添加到奇数数组中。
    • 如果元素是偶数,则将其添加到偶数数组中。
  3. 创建一个新的空数组,用于存储重新排列后的数组。
  4. 交替从奇数数组和偶数数组中取元素,并将其添加到重新排列后的数组中。
  5. 返回重新排列后的数组。

代码实现

def rearrangeArray(nums):
    odd = []
    even = []
    
    for num in nums:
        if num % 2 == 1:
            odd.append(num)
        else:
            even.append(num)
    
    result = []
    i = 0
    j = 0
    
    while i < len(odd) and j < len(even):
        result.append(odd[i])
        result.append(even[j])
        i += 1
        j += 1
    
    while i < len(odd):
        result.append(odd[i])
        i += 1
    
    while j < len(even):
        result.append(even[j])
        j += 1
    
    return result

复杂度分析

  • 时间复杂度:O(N),其中 N 为数组的长度。
  • 空间复杂度:O(N),因为我们使用了两个额外的数组来存储奇数和偶数。

总结

  1. 重新排列数组 是一道简单模拟题,通过本文介绍的解题思路和代码实现,你可以轻松地解决此题。希望本文对你的学习有所帮助。