Leetcode Day8 1
上了一天雅思累癱了。。晚上摸魚趕緊刷下題~
劍指 Offer 21. 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面
輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)在數(shù)組的前半部分,所有偶數(shù)在數(shù)組的后半部分。
?
示例:
輸入:nums = [1,2,3,4]
輸出:[1,3,2,4]?
注:[3,1,2,4] 也是正確的答案之一。
?
我的方法主要是前后判斷奇數(shù)偶數(shù)來遍歷。On可能大了點不過不占內(nèi)存~
重點是,我沒看題解就寫出來了!!雖然是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

讓我瞅瞅大佬的題解……不會這個也可以用二分吧?

大佬的做法主要是找到第一個奇偶不同的然后進行交換吧,不過我感覺差不多,為什么跑的效率差這么多呀
