题目链接: 922. 按奇偶排序数组 II
image.png
思路
很简单,搞懂问题的核心就行,假设现在有奇数在偶数位上,偶数在奇数位上。 那么我们要做的就是,找到分别在对方位置上的数字,然后交换他们就行。
class Solution: def sortArrayByParityII(self, A: List[int]) -> List[int]: # 判断数组大小是否小于等于1,是则直接返回数组 if len(A) <= 1: return A # 定义2个指针,i指向第一个偶数位,j指向第一个奇数位 i, j = 0, 1 # 循环结束的条件是i或者j超出数组范围 while i < len(A) and j < len(A): # i不是偶数位且j不是奇数位 直接交换,并把i j分别挪到下一个位置 if A[i] % 2 == 1 and A[j] % 2 == 0: A[i], A[j] = A[j], A[i] i += 2 j += 2 # i不是偶数, j是奇数 那么j去下一个位置 elif A[i] % 2 == 1: j += 2 # j不是奇数 i去下一个位置 elif A[j] % 2 == 0: i += 2 # i j位置都正确 else: i += 2 j += 2 return A
image.png