文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. Description
2. Solution
**解析:**Version 1,每次碰到一个位置与数值不对应的数时,都找一个与它奇偶性相反、位置与数值不对应的数交换。Version 2两个指针分别查找位置与数值不对应的奇数和偶数,然后交换数值。
- Version 1
class Solution:def sortArrayByParityII(self, nums: List[int]) -> List[int]:for i in range(len(nums)):if i % 2 != nums[i] % 2:j = i + 1while j % 2 == nums[j] % 2:j += 2nums[i], nums[j] = nums[j], nums[i]return nums
- Version 2
class Solution:def sortArrayByParityII(self, nums: List[int]) -> List[int]:n = len(nums)i = 0j = 1while i < n and j < n:while i < n and nums[i] % 2 == 0:i += 2while j < n and nums[j] % 2 == 1:j += 2if i < n and j < n:nums[i], nums[j] = nums[j], nums[i]return nums
Reference
- https://leetcode.com/problems/sort-array-by-parity-ii/