题解 | #调整数组顺序使奇数位于偶数前面(一)#

调整数组顺序使奇数位于偶数前面(一)

http://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b

法一:用两个辅助数组

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        ji=[]
        ou=[]
        for i in array:
            if i%2==0:
                ou.append(i)
            else:
                ji.append(i)
        return ji+ou

时间复杂度O(n):n表示原数组的长度,遍历原数组

空间复杂度O(n):需要n个存储空间

法二:类似插入排序的思想

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        for i in range(1,len(array)):
            if array[i]%2==1:#只用移动奇数,偶数不用移动
                currentvalue=array[i]
                pos=i 
                #对比,移动:当“当前项”的前面一项是偶数时,将“当前项”逐步移动到前面,直到前一项是奇数为止
                while pos>0 and array[pos-1]%2==0:#前面一项是偶数
                    array[pos]=array[pos-1]
                    pos=pos-1
            
                array[pos]=currentvalue#循环终止则是找到正确位置,在此插入“当前项”
        return array   

参考陈斌老师插入排序代码

时间复杂度O(n2)

空间复杂度O(1):直接在原数组移动,不需要额外空间。

全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务