当前位置: 首页 > article >正文

Leetcode922: 按奇偶排序数组 II

题目描述:

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

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

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

代码思路:

  1. 初始化两个列表
    • odd:用于存储数组中的奇数。
    • even:用于存储数组中的偶数。
  2. 遍历输入数组 nums
    • 对于每个元素 num,检查它是奇数还是偶数。
    • 如果是偶数,则将其添加到 even 列表中。
    • 如果是奇数,则将其添加到 odd 列表中。
  3. 初始化结果数组和索引
    • ans:用于存储最终的排序结果。
    • oidx:奇数列表 odd 的索引,用于跟踪下一个要添加到结果数组中的奇数。
    • eidx:偶数列表 even 的索引,用于跟踪下一个要添加到结果数组中的偶数。
  4. 重新填充结果数组
    • 遍历输入数组 nums 的索引范围(即 len(nums) 次)。
    • 对于每个索引 i
      • 如果 i 是偶数(i % 2 == 0),则从 even 列表中取出下一个偶数(使用 oidx 索引)并添加到 ans 中,然后递增 oidx
      • 如果 i 是奇数,则从 odd 列表中取出下一个奇数(使用 eidx 索引)并添加到 ans 中,然后递增 eidx
  5. 返回结果
    • 最终,ans 数组将包含按要求排序的元素,其中所有偶数位于偶数索引上,所有奇数位于奇数索引上,同时保持了它们各自的相对顺序。返回这个数组作为结果。

代码实现:

class Solution:
    def sortArrayByParityII(self, nums: List[int]) -> List[int]:
        odd, even = [], []
        for num in nums:
            if num % 2 == 0:  # 偶数
                even.append(num)
            else:  # 奇数
                odd.append(num)
        
        ans = []
        oidx, eidx = 0, 0
        for i in range(len(nums)):
            if i % 2 == 0:
                ans.append(even[oidx])
                oidx += 1
            else:
                ans.append(odd[eidx])
                eidx += 1
        
        return ans


        


http://www.kler.cn/a/532616.html

相关文章:

  • 【25考研】南开软件考研复试复习重点!
  • 在Mac mini M4上部署DeepSeek R1本地大模型
  • 股票入门知识
  • SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
  • doris:导入时实现数据转换
  • 【编译系列】Torch.compile()训练编译——算子融合逻辑 工程化
  • [Go]一、Go语言基础
  • 基于 docker 的mysql 5.7 主主集群搭建
  • fpga系列 HDL:XILINX Vivado ZYNQ-7000 PS-PL数据交互 AXI4 实现笔记
  • ros 发布Topic
  • 【力扣】238.除自身以外数组的乘积
  • Rust HashMap :当储物袋遇上物品清单
  • 基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发(BLE HID+CapSense)
  • ELF2开发板(飞凌嵌入式)搭建深度学习环境部署(RKNN环境部署)
  • 4种架构的定义和关联
  • 数据结构——并查集
  • 【单层神经网络】softmax回归的从零开始实现(图像分类)
  • gesp(C++六级)(8)洛谷:P10377:[GESP202403 六级] 好斗的牛
  • 【C++】泛型编程:吃透模板
  • 2023 年 12 月大学英语四级考试真题(第 3 套)——纯享题目版
  • 线性回归原理和算法
  • Verilog基础(四):组合逻辑
  • 深度求索DeepSeek横空出世
  • Swift语言的文件操作
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter1-什么是 JavaScript
  • 基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率