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

news2024/12/23 16:39:27

❓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.coloradmin.cn/o/650841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开发语言的更新换代,都是为了更好地提高生产力,Kotlin也是如此~

作为一名Android开发&#xff0c;学习Kotlin是很有必要的。以下是一些原因&#xff1a; 1.Kotlin是官方支持的语言。 在2017年Google宣布支持Kotlin作为官方开发语言后&#xff0c;Kotlin已成为Android生态系统的重要组成部分。此举表明Kotlin的发展前景非常广阔&#xff0c;…

uniapp兼容多pda扫描扫码

前景 网上有现成的针对单个pda扫码录入的代码&#xff0c;但是公司的需求是在多个不同厂商pda上运行&#xff0c;这就会导致不同的pda默认的广播动作和广播标签不一致的情况&#xff0c;目前也没有获取这俩字段的api。 单个pda扫描扫码代码 先创建一个scanCode.js的文件 le…

UnoCSS给了我一个不用tailwindcss的理由

相同的原由 & 前言 如果你没有听说过 tailwindcss 或者 unocss&#xff0c;请先 return 先去了解一下&#x1f61d;。 开发上&#xff1a;可能为你甚至你们的前端团队节省很多写样式的时间&#xff0c;也能让你或者你们的项目开发体验有很大提升生产上&#xff1a;你们的…

VS2013创建一个MFC工程的步骤

目录 1、新建项目&#xff0c;选择”MFC应用程序“&#xff1b; 2、应用程序类型&#xff0c;选择“基于对话框”&#xff1b; 3、对话框的标题&#xff0c;默认是和项目的名字一致&#xff0c;按需修改&#xff1b; 4、高级功能&#xff0c;可以保持默认&#xff1b; 5、…

一个女测试工程师的大厂日常

今天给大家分享两个朋友的故事&#xff0c;他们分别在国内两家顶尖的互联网大厂&#xff0c;一个在头条&#xff0c;一个在蚂蚁。 头条的故事 头条的主人公&#xff0c;在入职后的一年里&#xff0c;晚上十点半下班是比较早了&#xff0c;基本上都是十一点半左右下班&#xff…

低成本开发专属小程序支持自定义开发设计

传统定制开发小程序成本高&#xff0c;还需要不断地沟通和交流才能一步步地去实现你想要的功能和效果&#xff0c;那么除了传统的定制开发小程序外&#xff0c;用户其实还可以选择使用模板开发小程序&#xff0c;不仅能实现小程序的所有基础功能&#xff0c;还不用编程维护和开…

进程的描述与控制

文章目录 前趋图和程序执行前趋图程序顺序执行程序并发执行 进程引入目的进程的描述进程的定义进程的特征进程的基本状态与转换挂起操作和进程状态的转换挂起操作引入引入挂起操作后进程3个基本状态间的转换引入挂起操作后进程5个基本状态间的转换进程管理中的数据结构OS中用于…

antdb-upgrade大版本升级介绍

antdb-upgrade pg_upgrade 是postgresql 大版本升级的得力工具。 数据库系统数据部分通过 new version的pg_upgrade自动升级完成数据库用户数据部分&#xff0c;主要有两种用法&#xff1a; 使用pg_upgrade copy物理拷贝方式升级(非copy to/copy from逻辑拷贝)。使用pg_upgra…

内网渗透—隧道搭建SPP与NPS内网穿透

内网渗透—隧道搭建&SPP与NPS内网穿透 1. 前言2. SPP2.1. SPP代理通信2.1.1. 服务端配置2.1.2. 客户端配置2.1.3. CS设置2.1.3.1. 设置生成的监听器2.1.3.2. 设置监听的监听器 2.1.4. 执行效果 2.2. SPP隧道建立2.2.1. 服务端设置2.2.2. 客户端配置2.2.3. CS设置2.2.3.1. 设…

Mybatis学习笔记三

目录 一、MyBatis的缓存1.1 MyBatis的一级缓存1.2 MyBatis的二级缓存1.3 二级缓存的相关配置1.4 MyBatis缓存查询的顺序1.5 整合第三方缓存EHCache&#xff08;了解&#xff09; 二、MyBatis的逆向工程2.1 创建逆向工程的步骤2.2 简单使用查询增改 三、 分页插件3.1 分页插件使…

Endnote解决文章题目Title大小写问题,以及专有名词保持全部大写

在写毕业论文或综述类文章时&#xff0c;需要添加大量参考文献&#xff08;100左右或更多&#xff09;&#xff0c;而每个期刊的要求是不一样的&#xff0c;因此手动输入或修改参考文献的格式是愚蠢的&#xff08;狗头保命&#xff09;&#xff0c;所以需要强大的endnote来进行…

一篇博客搞定C++11之Lambda表达式(附案例代码+解析)

Lambda表达式 1.lambda表达式语法2.捕获列表说明3.lambda表达式实现原理4.具体案例5.总结 1.lambda表达式语法 ambda表达式的语法非常简单&#xff0c;具体定义如下&#xff1a; [ captures ] ( params ) specifiers exception -> ret { body } 先不用急于解读这个定义&…

面向对象内部类

概念 将一个类 A 定义在另一个类 B 里面&#xff0c;里面的那个类 A 就称为内部类 &#xff08;InnerClass&#xff09;&#xff0c;类 B 则称为外部类&#xff08;OuterClass&#xff09; 根据内部类声明的位置&#xff08;如同变量的分类&#xff09;&#xff0c;我们可以分…

首次使用云服务器搭建网站(二)

书接上文&#xff0c;我们已经完成了服务器的租赁&#xff0c;宝塔面板的下载与安装。 接下来我们将正式开始网站搭建。 一、网站创建 点击网站、添加站点 输入网站域名、数据库选择MySQL数据库&#xff0c;选择utf8&#xff0c;数据库账号密码会自动生成。无论你要创建什么样…

【linux网络配置】多个网卡一起使用,一个网卡连内网,一个网卡连外网

一、问题背景 因为有一个工作站在内网中&#xff0c;但是没有办法联网&#xff08;校园网账户有限&#xff09;。 虽然工作站没有联网&#xff0c;但是我仍然可以通过局域网远程控制工作站&#xff0c;使其访问校园网验证页面实现上网。 当给工作站安装软件或依赖项时&#…

SpringBoot配置文件application.properties的理解

一、存放位置分类 1.当前项目根目录下的config目录下 2.当前项目的根目录下 3.resources目录下的config目录下 4.resources目录下 按照这上面的顺序&#xff0c;4个配置文件的优先级依次降低。 我们在项目里面4个位置分别设置了各种的application.properties文件。每个文件…

MySQL查看和修改最大连接数

标题&#xff1a;MySQL查看和修改最大连接数 MySQL 是一种广泛使用的开源关系型数据库管理系统&#xff0c;被许多应用程序用作其后端存储解决方案。在高并发的环境下&#xff0c;MySQL 的最大连接数变得尤为重要。本文将介绍如何查看当前的最大连接数&#xff0c;并详细说明每…

安卓实战开发之——使用 WIFI 进行设备搜索并获取相应信息

目录 一、前言 二、准备条件 三、功能要求 四、显示效果 五、关键代码 一、前言 此玩意是本人很早很早&#xff08;记不清有多早了&#xff0c;反正很早&#xff09;做过的一个课程任务了&#xff0c;无意之中翻到了&#xff0c;所以把它放上来。不愿再找以前写的代码了…

大数据环境搭建 Hadoop+Hive+Flume+Sqoop+Azkaban

目录 零&#xff1a;版本说明一、安装CentOS二、Hadoop单机配置三、Hive安装部署 零&#xff1a;版本说明 Hadoop&#xff1a;3.1.0 CentOS&#xff1a;7.6 JDK&#xff1a;1.8 一、安装CentOS 这里网上教程很多&#xff0c;就不贴图了 【内存可以尽量大一些&#xff0c;不然…

DeepBIO:一个自动化和可解释的深度学习平台,用于高通量生物序列预测,功能注释和可视化分析

DeepBIO: an automated and interpretable deep-learning platform for high-throughput biological sequence prediction, functional annotation and visualization analysis 期刊&#xff1a;Nucleic Acids Research 中科院分区&#xff1a;2区 影像因子&#xff1a;19.1…