922. 按奇偶排序数组 II 双指针 力扣

922. 按奇偶排序数组 II

已解答

简单

相关标签

相关企业

给定一个非负整数数组 numsnums 中一半整数是 奇数 ,一半整数是 偶数

对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数

你可以返回 任何满足上述条件的数组作为答案

示例 1:

复制代码
输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。

示例 2:

复制代码
输入:nums = [2,3]
输出:[2,3]

提示:

  • 2 <= nums.length <= 2 * 104
  • nums.length 是偶数
  • nums 中一半是偶数
  • 0 <= nums[i] <= 1000

思路:

左右指针0和n-1,左指针一次前进2格,永远在偶数位,右指针一次后退2格,永远在奇数位。

复制代码
class Solution(object):
    def sortArrayByParityII(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        i=0
        j=len(nums)-1
        while i<len(nums) and j>=0:
            if nums[i]%2==1 and nums[j]%2==0:
                nums[i],nums[j]=nums[j],nums[i]
                # print(nums)
                i+=2
                j-=2
            if i<len(nums) and nums[i]%2==0:
                i+=2
            if nums[j]%2==1 and j>=0:
                j-=2
        return nums
相关推荐
黎阳之光7 分钟前
黎阳之光:数智技术赋能水利“平急两用” 筑牢水利工程安全防线
大数据·人工智能·算法·安全·数字孪生
WG_179 分钟前
Linux44+45:日志和线程池
算法
️是7823 分钟前
信息奥赛一本通—编程启蒙(3345:【例60.2】 约瑟夫问题)
开发语言·c++·算法
add45a31 分钟前
C++中的智能指针详解
开发语言·c++·算法
做科研的周师兄32 分钟前
巴音河中下游灌溉草地空间分布数据集(2020年)
大数据·人工智能·算法·机器学习·数据挖掘·聚类
小王不爱笑13233 分钟前
Java HashSet
数据结构
闻缺陷则喜何志丹33 分钟前
【分治法 前缀和】P8572 [JRKSJ R6] Eltaw|普及+
c++·算法·前缀和·洛谷·分治法
纤纡.36 分钟前
矿物识别分类:8 种机器学习算法对比与实战(平均值填充数据集)
python·深度学习·算法·机器学习
ulias21237 分钟前
函数栈帧的创建和销毁
开发语言·数据结构·c++·windows·算法
少许极端39 分钟前
算法奇妙屋(三十五)-贪心算法学习之路 2
学习·算法·贪心算法