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
相关推荐
north_eagle3 小时前
向量搜索技术深度研究报告:架构原理、核心算法与企业级应用范式
算法·架构
椰萝Yerosius4 小时前
[题解]2024CCPC郑州站——Z-order Curve
c++·算法
小曹要微笑4 小时前
STM32F7 时钟树简讲(快速入门)
c语言·stm32·单片机·嵌入式硬件·算法
南山安4 小时前
栈(Stack):从“弹夹”到算法面试题的进阶之路
javascript·算法·面试
2301_764441335 小时前
Python构建输入法应用
开发语言·python·算法
AI科技星5 小时前
为什么变化的电磁场才产生引力场?—— 统一场论揭示的时空动力学本质
数据结构·人工智能·经验分享·算法·计算机视觉
TheLegendMe6 小时前
贪心+线程安全单例
算法·哈希算法
豐儀麟阁贵6 小时前
8.5在方法中抛出异常
java·开发语言·前端·算法
胖咕噜的稞达鸭6 小时前
算法入门:滑动窗口--->找到字符串中所有的字母异位词,串联所有的子串,最小覆盖子串
数据库·redis·算法
小青龙emmm7 小时前
2025级C语言第二次周测(国教专用)题解
c语言·开发语言·算法