每日一题20201112(922. 按奇偶排序数组 II)

简介: 按奇偶排序数组方法

题目链接: 922. 按奇偶排序数组 II


11.jpg

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

12.jpg

image.png




相关文章
|
5天前
leetcode-922:按奇偶排序数组 II
leetcode-922:按奇偶排序数组 II
17 0
|
5天前
|
人工智能
【力扣每日一题/03】941. 有效的山脉数组
【力扣每日一题/03】941. 有效的山脉数组
|
5天前
|
算法
LeetCode 922. 按奇偶排序数组 II
LeetCode 922. 按奇偶排序数组 II
27 0
|
5天前
|
Java
每日一题《剑指offer》数组篇之数组中的逆序对
每日一题《剑指offer》数组篇之数组中的逆序对
29 0
每日一题《剑指offer》数组篇之数组中的逆序对
|
5天前
|
Java
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
16 0
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
|
5天前
|
Java
每日一题《剑指offer》数组篇之和为S的两个数字
每日一题《剑指offer》数组篇之和为S的两个数字
30 0
每日一题《剑指offer》数组篇之和为S的两个数字
|
5天前
|
人工智能 Java
每日一题《剑指offer》数组篇之连续子数组的最大和
每日一题《剑指offer》数组篇之连续子数组的最大和
39 0
每日一题《剑指offer》数组篇之连续子数组的最大和
|
9月前
|
算法 C语言 C++
Leetcode 每日一题 2341. 数组能形成多少数对
返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。
28 0
每日一题—— 按奇偶排序数组
每日一题—— 按奇偶排序数组
48 0
每日一题—— 按奇偶排序数组