返回
1470. 重新排列数组:解题思路与代码实现
后端
2023-10-01 22:59:07
题目
给定一个数组 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
解题思路
这道题的解题思路非常简单,我们可以遍历数组,将奇数和偶数分别放置在两个不同的数组中,最后再将这两个数组交替合并即可。
具体步骤如下:
- 初始化两个空数组,分别用于存储奇数和偶数。
- 遍历给定的数组,对于每个元素:
- 如果元素是奇数,则将其添加到奇数数组中。
- 如果元素是偶数,则将其添加到偶数数组中。
- 创建一个新的空数组,用于存储重新排列后的数组。
- 交替从奇数数组和偶数数组中取元素,并将其添加到重新排列后的数组中。
- 返回重新排列后的数组。
代码实现
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),因为我们使用了两个额外的数组来存储奇数和偶数。
总结
- 重新排列数组 是一道简单模拟题,通过本文介绍的解题思路和代码实现,你可以轻松地解决此题。希望本文对你的学习有所帮助。