Leetcode Day8 1
上了一天雅思累瘫了。。晚上摸鱼赶紧刷下题~
剑指 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

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

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