题目

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

示例:

  1. 输入:nums = [1,2,3,4]
  2. 输出:[1,3,2,4]
  3. 注:[3,1,2,4] 也是正确的答案之一。

提示:

  1. 1 <= nums.length <= 50000
  2. 1 <= nums[i] <= 10000

答案1

  1. from typing import List
  2. class Solution:
  3. def exchange(self, nums: List[int]) -> List[int]:
  4. res_odd = []
  5. res_even = []
  6. for i in nums:
  7. if not i % 2:
  8. res_even.append(i)
  9. else:
  10. res_odd.append(i)
  11. return res_odd + res_even
  12. Solution().exchange([1, 2, 3, 4])

Note

使用两个列表
第一个存奇数,第二个存偶数,再拼接两个数组

答案2 一行

  1. from typing import List
  2. class Solution:
  3. def exchange(self, nums: List[int]) -> List[int]:
  4. print(sorted(nums, key=lambda x: x % 2 != 1))
  5. return sorted(nums, key=lambda x: x % 2 != 1)
  6. Solution().exchange([1, 2, 3, 4])

Note

sorted 的 key 参数,函数返回true 不排序?