欢迎光临散文网 会员登陆 & 注册

Leetcode Day8 1

2022-04-09 20:38 作者:我喜欢喝一点点  | 我要投稿

上了一天雅思累瘫了。。晚上摸鱼赶紧刷下题~

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。


 


示例:


输入:nums = [1,2,3,4]

输出:[1,3,2,4] 

注:[3,1,2,4] 也是正确的答案之一。

 

我的方法主要是前后判断奇数偶数来遍历。On可能大了点不过不占内存~

重点是,我没看题解就写出来了!!虽然是easy题,呜呜呜是不是说明我水平提高了点?

from typing import List

class Solution:

    def exchange(self, nums: List[int]) -> List[int]:

        def isOdd(x:int):

            if x&1==1:

                return True

            else:

                return False

        i=0

        j=len(nums)-1

        while i<j:

            if isOdd(nums[i])==True and isOdd(nums[j])==True:

                i+=1

                continue

            elif isOdd(nums[i])==False and isOdd(nums[j])==False:

                j-=1

                continue

            elif isOdd(nums[i])==True and isOdd(nums[j])==False:

                i+=1

                j-=1

                continue

            else:

                tmp=nums[j]

                nums[j]=nums[i]

                nums[i]=tmp

                i+=1

                j-=1

                continue

        return nums

让我瞅瞅大佬的题解……不会这个也可以用二分吧?

大佬的做法主要是找到第一个奇偶不同的然后进行交换吧,不过我感觉差不多,为什么跑的效率差这么多呀


Leetcode Day8 1的评论 (共 条)

分享到微博请遵守国家法律