(数组) 922. 按奇偶排序数组 II ——【Leetcode每日一题】

news/2024/11/8 2:50:37/

❓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 < = n u m s . l e n g t h < = 2 ∗ 1 0 4 2 <= nums.length <= 2 * 10^4 2<=nums.length<=2104
  • nums.length 是偶数
  • nums 中一半是偶数
  • 0 <= nums[i] <= 1000

进阶:可以不使用额外空间解决问题吗?

💡思路:双指针

不使用额外空间,就要在原数组上修改:

  1. 为数组的偶数下标部分和奇数下标部分分别维护指针 i , j

  2. 先找在偶数位置上的奇数,如果存在,则一定有错位的对应的偶数,如果不存在,则没有发生错位:

    • 如果 nums[i]为奇数,则再去找奇数位置上的偶数;
    • nums[i]nums[j] 交换;
  3. 我们不断进行步骤2,最终能够将所有的整数放在正确的位置上。

🍁代码:(Java、C++)

Java

class Solution {public int[] sortArrayByParityII(int[] nums) {int j = 1;for(int i = 0; i < nums.length; i += 2){if(nums[i] % 2 != 0){//找在偶数位置上的奇数while(nums[j] % 2 == 1) j += 2;//找在奇数位置上的偶数int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}}return nums;}
}

C++

class Solution {
public:vector<int> sortArrayByParityII(vector<int>& nums) {int j = 1;for(int i = 0; i < nums.size(); i += 2){if(nums[i] % 2 != 0){//找在偶数位置上的奇数while(nums[j] % 2 == 1) j += 2;//找在奇数位置上的偶数swap(nums[i], nums[j]);}}return nums;}
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组 nums 的长度。
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


http://www.ppmy.cn/news/345451.html

相关文章

【Selenium2+python】自动化unittest生成测试报告

前言 批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导…

python_概率密度图

amtpd.read_excel(ramt.xlsx)import seaborn as sns sns.kdeplot(amt.limit_final_yxh)

HP DA1023电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP DA1023 处理器Intel(R) Core(TM) i5-8265U已驱动 内存8 GB 2400 MHz DDR4.已驱动 硬盘Samsung SSD 980 250GB(macOS)已驱动 显卡I…

红米note_标注2013122_官方线刷包_救砖包_解账户锁

红米NOTE移动增强版2013122下载地址&#xff1a; https://pan.baidu.com/s/1NWD3kq_mnlInROsext2YYw 刷机包平台驱动教程&#xff0c;全部打包在一起 下载解压后&#xff0c;按照刷机教程进行刷机

红米二代竟有四款!64位/八核/5.5英寸

除了2014017和2014018两款新机之外&#xff0c;我们还在工信部网站上发现了小米的另外两款新机&#xff0c;分别是2013121和2014122&#xff0c;其外观和前者保持一致&#xff0c;因此应该也是红米家族的两款产品。 具体配置方面&#xff0c;2013121机身尺寸为15478.79.45mm&am…

011 - STM32学习笔记 - 串口通讯

011 - STM32学习笔记 - 串口通讯 关于串口的相关概念各位可以在网上查一下相关介绍&#xff0c;这里直接开始学习STM32上的串口配置和通讯测试了 在学习相关寄存器之前&#xff0c;先看一下USART的功能框图 1、USART引脚 引脚名称引脚功能TX数据发送端RX数据接收端SW_RX单线…

php安装拓展之phpize方式安装

php的源码包中有一个ext文件夹里面好多拓展插件&#xff0c;如果编译安装php的时候&#xff0c;没有安装拓展&#xff0c;可以后续通过phpize安装拓展 进入 ext文件夹 之后假如我需要安装imap插件 cd imap生成 configure文件 /usr/local/php/bin/phpize直接在imap目录执行 p…

Jsoup初接触-抓取彩票网站历史开奖信息

下载jsoup.jar加到工程里 -> http://jsoup.org/download 分析彩票网站html源码&#xff0c;出奖信息大概如下&#xff1a; <tr class"bgcolor1"><td class"td1">2013-10-15</td><td class"td2"><a href"/lo…