龙空技术网

打基础之,LeetCode算法题第10日刷,又一数组的奇偶排序问题

吾是我师 251

前言:

眼前小伙伴们对“java奇数偶数分别保存在不同数组里”大约比较关注,你们都想要知道一些“java奇数偶数分别保存在不同数组里”的相关资讯。那么小编也在网摘上收集了一些对于“java奇数偶数分别保存在不同数组里””的相关内容,希望大家能喜欢,我们一起来学习一下吧!

一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。

我计划每题给出两种语言的解决方案,一种静态语言,一种动态语言。

我选择C语言和Python,本来考虑Java,但是篇幅有限,有兴趣的朋友自己试试。

LeetCode 922. 数组的奇偶排序问题II(Sort Array By Parity II)

问题描述:

给定由一半奇数和一半偶数组成的数组,要求你对数组进行排序使得奇数的索引也是奇数,偶数的索引也是偶数。

注:

2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <= 1000示例:C语言实现:

创建一个数组B,定义两个变量evenIndex和oddIndex分别用来保存没有赋值的偶索引和奇引;遍历数组A,如果遇到偶数就添加到B[evenIndex],然后evenIndex设置为下一个偶索引,如果遇到奇数就添加到B[oddIndex],然后oddIndex设置为下一个奇索引。

算法只需要对A遍历一次即可,时间复杂度为O(n)。

python语言实现:

首先创建一个和A长度相同的数组,我是通过A.copy()实现的,就是为了不修改A。然后通过两个列表生成器分别获取所有的奇数和所有的偶数。最后通过切片赋值填充B即可。

标签: #java奇数偶数分别保存在不同数组里