牛客JZ21-调整数组顺序使奇数位于偶数前面

目录

  • 问题描述
  • 示例
  • 具体思路
    • 思路一
  • 代码实现

问题描述

输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
数据范围:0≤n≤5000,数组中每个数的值:0≤val≤10000
要求:时间复杂度: O ( n ) O(n) On,空间复杂度: O ( n ) O(n) On
进阶:时间复杂度: O ( n 2 ) O(n^2) On2,空间复杂度: O ( 1 ) O(1) O1

题目链接: https://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b?tpId=13&tqId=1374930&ru=%2Fpractice%2F0c1b486d987b4269b398fee374584fc8&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&sourceUrl=

示例

示例1
输入:[1,2,3,4]
返回值:[1,3,2,4]

示例2
输入:[2,4,6,5,7]
返回值:[5,7,2,4,6]

示例3
输入:[1,3,5,6,7]
返回值:[1,3,5,7,6]

具体思路

  首先可以考虑相对位置可以变化的情况
题目链接: 牛客JZ81:https://www.nowcoder.com/practice/0c1b486d987b4269b398fee374584fc8?tpId=13&tqId=2221866&ru=%2Fpractice%2Fef1f53ef31ca408cada5093c8780f44b&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&sourceUrl=

  可以通过左右下标的方法,left下标找到偶数,right下标找到奇数,然后进行交换,left是奇数就++left,right是偶数就–right,一次类推完成所有数据的交换,但是这种方式是无法保证奇数和奇数,还有偶数和偶数的相对位置不变的。
在这里插入图片描述

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param array int整型vector * @return int整型vector*/vector<int> reOrderArrayTwo(vector<int>& array) {// write code hereint left =0;int right=array.size()-1;while(left<right){while(left<right&&(array[left]&1))  //左指针找偶数{left++;}while(left<right&&!(array[right]&1))  //右指针找奇数{right--;}if(left<right)    //进行奇数和偶数的交换{int tmp=array[left];array[left]=array[right];array[right]=tmp;}}return array;    //返回整个数组}
};

思路一

  首先遍历整个数组,查找数组中的奇数,找到后将它临时保存起来,然后将该奇数位置之前的所有偶数都向后移动一位,最后将该奇数放到移动后的空闲位置处,依次类推,就可以完成不改变顺序的奇数在前偶数在后的数组排序。

在这里插入图片描述

代码实现

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param array int整型vector * @return int整型vector*/vector<int> reOrderArray(vector<int>& array) {// write code hereif(array.empty()){return {};}int k=0;for(int i=0;i<array.size();i++){if((array[i]&1)==1)  //判断是否为奇数{int tmp=array[i];   //保存奇数的值int j=i;while(j>k){array[j]=array[j-1];   //将k后面的偶数各向后移动一位j--;}array[k++]=tmp;   //将奇数放入移动后空闲的位置} }return array;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571677.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LInux|命令行参数|环境变量

LInux|命令行参数|环境变量 命令行参数main的参数之argc&#xff0c;argv几个小知识<font color#0099ff size 5 face"黑体">1.子进程默认能看到并访问父进程的数据<font color#4b0082 size 5 face"黑体">2.命令行创建的程序父进程都是bash 环…

【Redis】快速入门 数据类型 常用指令 在Java中操作Redis

文章目录 一、简介二、特点三、下载与安装四、使用4.1 服务器启动4.2 客户端连接命令4.3 修改Redis配置文件4.4 客户端图形化界面 五、数据类型5.1 五种常用数据类型介绍5.2 各种数据类型特点 六、常用命令6.1 字符串操作命令6.2 哈希操作命令6.3 列表操作命令6.4 集合操作命令…

你的 Python 代码需要解释一下了!

Python 是一种相对简单的编程语言。它主要以解释型语言著称&#xff0c;这意味着每行代码都要通过解释器逐行执行。不过在某些时候&#xff0c;将 Python 代码翻译成计算机可以理解的内容&#xff0c;然后再逐行执行&#xff0c;可以减少繁琐。 在这种情况下&#xff0c;编译器…

PostgreSQL中控制文件的解析与恢复

最近遇到有人问起PG中控制文件的一些使用问题,总结了一下。 1、PG控制文件简介 1.1、存储的位置 它的路径位于: 相关信息,可以用命令pg_controldata得到: [10:41:27-postgres@centos2:/var/lib/pgsql/14/data/global]$ pg_controldata -D $PGDATA pg_control version …

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第42讲。 三位数组合&#…

AI新工具(20240327) 自动生成带有精确躯干和手部动作的主播风格视频;新型AI搜索thinkany.ai;小米发布图像生成技术SDXS

✨ 1: Make-Your-Anchor 自动生成带有精确躯干和手部动作的主播风格视频 Make-Your-Anchor是一种革新性的系统&#xff0c;它允许用户仅使用一个人为期一分钟的视频片段进行训练&#xff0c;进而自动生成带有精确躯干和手部动作的主播风格视频。这样的系统特别适合于需要产生…

scrapy爬虫框架

scrapy爬虫框架 一、scrapy的概念作用和工作流程1、scrapy的概念2、scrapy框架的作用3、scrapy的工作流程&#xff08;重点&#xff09;3.1 回顾之前的爬虫流程3.2 改写上述流程3.3 scrapy的流程3.4 scrapy的三个内置对象3.5 scrapy中每个模块的具体作用 二、scrapy的入门使用1…

MySQL数据库高阶语句②

目录 一.子查询与多表查询 1.子查询 2.update子查询 3.多表查询 4.delete子查询 5.exists关键字也用于子查询 6.结果集 二.MySQL视图 1.定义 2.作用场景 3.视图与表的区别与联系 &#xff08;1&#xff09;区别 ①视图是已经编译好的sql语句。而表不是 ②视图没有…

Java_17 两数之和

两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任…

CentOS 7 下安装RabbitMQ教程

CentOS 7 下安装RabbitMQ教程 一、做准备&#xff08;VMWare 虚拟机上的 CentOS 7 镜像 上安装的&#xff09; &#xff08;1&#xff09;准备RabbitMQ的安装包&#xff08;rabbitmq-server-3.8.5-1.el7.noarch&#xff09;下载地址mq &#xff08;2&#xff09;还得准备erl…

单页面应用部署到iis上可以正常打开,刷新就404

当您遇到Dumi打包的网站部署到IIS上可以正常打开首页,但刷新页面时出现404错误的情况,这通常与以下几个方面有关: 路由处理: Dumi生成的项目通常基于SPA(Single Page Application)架构,使用前端路由来实现无刷新导航。这意味着大部分页面切换是在浏览器层面完成的,而不…

惠海 H6218L 降压芯片 支持宽压24V30V36V48V60V72V120V输入,转3.3V5V12V4A 大电流

降压芯片&#xff08;也称为DC-DC转换器或电压调节器&#xff09;是一种电子设备&#xff0c;用于将较高的输入电压降低到所需的输出电压。根据您提供的信息&#xff0c;这种降压芯片支持多种宽范围输入电压&#xff0c;包括24V、30V、36V、48V、60V、72V和120V&#xff0c;并能…