leetcode-5.21[581. 最短无序连续子数组、905. 按奇偶排序数组、922. 按奇偶排序数组 II](python实现)

题目1

在这里插入图片描述

题解1

class Solution:
    def findUnsortedSubarray(self, nums: List[int]) -> int:
        l,r = 0, len(nums)-1
        while l <= r:
            Max = max(nums[l:r+1])
            Min = min(nums[l:r+1])
            if nums[l] == Min:
                l += 1
            elif nums[r] == Max:
                r -= 1
            else:
                break
        return len(nums[l:r+1])

附上题目链接

题目2

在这里插入图片描述

题解2

class Solution:
    def sortArrayByParity(self, A: List[int]) -> List[int]:
        l = 0
        r = len(A)-1
        while l < r:
            # 左指针为奇数,右指针为偶数则交换
            if A[l]%2 != 0 and A[r]%2 == 0:
                A[l],A[r] = A[r],A[l]
                l += 1
                r -= 1
            # 左右都为偶数,则左移左指针
            elif A[r]%2 == 0 and A[l]%2 == 0:
                l += 1
            # 左右都为奇数,则右移右指针
            elif A[l]%2 != 0 and A[r]%2 != 0:
                r -= 1
            # 左指针为偶数,右指针为奇数
            else:
                l += 1
                r -= 1
        return A

附上题目链接

题目3

在这里插入图片描述

题解3

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        odd = []
        even = []
        res = []
        n = len(A)
        for num in A:
            if num%2==0:
                even.append(num)
            else:
                odd.append(num)
        while n:
            res.append(even.pop())
            res.append(odd.pop())
            n -= 2
        return res

附上题目链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值