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

【Leetcode 每日一题 - 补卡】922. 按奇偶排序数组 II

问题背景

给定一个非负整数数组 n u m s nums nums n u m s nums nums 中一半整数是 奇数 ,一半整数是 偶数
对数组进行排序,以便当 n u m s [ i ] nums[i] nums[i] 为奇数时, i i i 也是 奇数 ;当 n u m s [ i ] nums[i] nums[i] 为偶数时, i i i 也是 偶数
你可以返回 任何满足上述条件的数组作为答案 。

数据约束

  • 2 ≤ n u m s . l e n g t h ≤ 2 × 1 0 4 2 \le nums.length \le 2 \times 10 ^ 4 2nums.length2×104
  • n u m s . l e n g t h nums.length nums.length 是偶数
  • n u m s nums nums 中一半是偶数
  • 0 ≤ n u m s [ i ] ≤ 1000 0 \le nums[i] \le 1000 0nums[i]1000

解题过程

要求数组中的奇数放在奇数位置上,偶数放在偶数位置上。
只要定义两个指针,遇到符合要求的元素直接后移,当两个元素都不符合要求时(题目保证这种情况一定会发生),交换它们所指的元素。

具体实现

class Solution {
    public int[] sortArrayByParityII(int[] nums) {
        int left = 0, right = nums.length;
        for (int i = 0, j = 1; i < nums.length;) {
            if ((nums[i] & 1) == 0) {
                i += 2;
            } else if ((nums[j] & 1) == 1) {
                j += 2;
            } else {
                swap(nums, i, j);
                i += 2;
                j += 2;
            }
        }
        return nums;
    }

    private void swap (int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

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

相关文章:

  • docker pull Error response from daemon问题
  • Ubuntu下Tkinter绑定数字小键盘上的回车键(PySide6类似)
  • 【Java】位图 布隆过滤器
  • e2studio开发RA2E1(5)----GPIO输入检测
  • C#中的委托(Delegate)
  • go-zero学习笔记(三)
  • OSCP - Other Machines - Blogger
  • 【华为OD机试python】日志采集系统【 E卷 | 2023 Q1 |100分】
  • RabbitMQ中的@Header
  • Maven 依赖管理基础
  • 网络命令
  • Java并发编程面试题:ThreadLocal(8题)
  • windows 剪切板的写入、读取,包括图片,文本内容
  • 代码随想录二刷|回溯1
  • 嵌入式开发:PPM是什么单位
  • 基础篇05-直方图操作
  • 深度整理总结MySQL——Count的工作原理
  • Swagger相关内容整合
  • 【实用小技巧】git如何添加一个文件的一部分修改到暂存区(git add -p)
  • 深入理解 JavaScript 的 Promise:实例方法与静态方法
  • 无法连接到远程扩展主机服务器
  • 如何解决 Vue 应用中的内存泄漏
  • css 之 clip-path
  • 本地大模型编程实战(08)自制聊天机器人(2)
  • Java 常见的面试题(Hibernate)
  • 基于SpringBoot浪狼狗领养系统