class Solution:
def exchange(self, nums: List[int]) -> List[int]:
return sorted(nums,key=lambda x: x%2==0)
#这个方法太符合python大法了,没有一点花里胡哨的东西,一行、极简的解决问题
#这个key的意思就是按照偶数进行升序的排序
In [10]: nums = [1,3,2,4]
In [11]: sorted(nums,key = lambda x:x%2==0)
Out[11]: [1, 3, 2, 4]
2、queue方法
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
#声明一个双端队列,然后偶数放在右端,奇数放在左端
temp=collections.deque()
for num in nums:
if num&1==0:
temp.append(num)
else:
temp.appendleft(num)
return list(temp)
3、双指针法
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
#i,j分别是左右两个指针,我们最终要保证是的左边都是奇数,右边都是偶数
#循环终止的条件是i==j,左右两个指针相同的时候才停止
i,j=0,len(nums)-1
while i<j:
while i<j and nums[i]&1==1:
i+=1
while i<j and nums[j]&1==0:
j-=1
nums[i],nums[j] = nums[j],nums[i]
#交换奇数偶数的位置
return nums