《剑指 Offer》——调整数组顺序使奇数位于偶数前面

1. 本题知识点

数组

2. 题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

例如:

Input:
[1,2,3,4,5]

Output:
[1,3,5,2,4]

3. 解题思路

创建一个奇数数组和一个偶数数组,将原数组中的奇数和偶数分别加入其中,最后将奇数数组和偶数数组赋值给原数组。

原数组:[1,2,3,4,5]

奇数数组:[1,3,5]

偶数数组:[2,4]

赋值给原数组:[1,3,5,2,4]

4.代码

public class Solution {
    /**
     * 调整数组顺序使奇数位于偶数前面
     * 并保证奇数和奇数,偶数和偶数之间的相对位置不变
     *
     * @param array
     */
    public void reOrderArray(int[] array) {
        // 偶数数组
        int[] evenArray = new int[array.length];
        // 奇数数组
        int[] oddArray = new int[array.length];
        // 偶数个数
        int evenNum = 0;
        // 奇数个数
        int oddNum = 0;

        // 遍历原数组
        for (int i = 0; i < array.length; i++) {
            // 当前元素为偶数,则加入偶数数组
            if (array[i] % 2 == 0) {
                evenArray[evenNum] = array[i];
                evenNum++;
            }
            // 当前元素为奇数,则加入奇数数组
            else {
                oddArray[oddNum] = array[i];
                oddNum++;
            }
        }

        // 将奇数数组和偶数数组赋值给原数组
        System.arraycopy(oddArray, 0, array, 0, oddNum);
        System.arraycopy(evenArray, 0, array, oddNum, evenNum);
    }
}

热门文章

暂无图片
编程学习 ·

php-fpm 服务

系统:centos 7版本:php-5.6.9安装目录:/Data/app/php/cd etc/mv php-fpm.conf.default php-fpm.confsbin/php-fpm 「 php-fpm 启动 & 无php-fpm.pid 」 ps -ef | grep php-fpmroot 23536 1 0 20:36 ? 00:00:00 php-fpm: master process (/Data/app/…
暂无图片
编程学习 ·

Leetcode 题解 - 栈和队列

用栈实现队列 232. Implement Queue using Stacks (Easy) 栈的顺序为后进先出,而队列的顺序为先进先出。使用两个栈实现队列,一个元素需要经过两个栈才能出队列,在经过第一个栈时元素顺序被反转,经过第二个栈时再次被反转,此时就是先进先出顺序。 class MyQueue {private …
暂无图片
编程学习 ·

小白爬虫--Xpath定位信息--举一反三

断断续续学了好多次爬虫,始终没抓到重点,最近两天终于摸到点门路,发现定位信息是最重要的,定位好了,再借助解析库就可以提取想要的信息了。 基本套路如下:(爬虫三部曲) 第一,抓取网页源代码 url = “你爬取信息的网址” headers = 请求头 import requests r0 = reques…
暂无图片
编程学习 ·

shell(1)

diff -b 忽略空格 -B 忽略空行 -i 忽略大小写 -c 显示文件所有内容并标不同 -r 对比输出 -u 合并输出 patch patch 源文件 布丁文件 -b 备份原文件 cut 检测apache服务器被谁访问的次数最多,显示访问者ip并显示访问次数 cat /etc/httpd/logs/access_log | cut…
暂无图片
编程学习 ·

java学习基础:Math类

记录学习java路程将与风雨相伴!!! Math类(数学类) 算术计算 Math.sqrt():计算平方根 Math.cbrt():计算立方根 Math.pow(a,b):计算a的b次方 Math.max(,):计算最大值 Math.min(,):计算最小值 Math.abs():取绝对值 进位 Math.ceil():天花板的意思,就…
暂无图片
编程学习 ·

centos下安装nginx

1,环境介绍 本文安装nginx版本为1.12.2 系统版本为centos6.9 2,软件下载 链接:https://pan.baidu.com/s/1RVhCS1-WcXXaGlnAVQPH-g 提取码:od5x 3,安装nginx 1,编译安装需要安装一些兼容包 yum install pcre-devel openssl-devel gcc-c++ htop iotop iftop nmap nc telnet…
暂无图片
编程学习 ·

ubuntu python 升级 和pip匹配问题

ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决https://blog.csdn.net/qq_29935433/article/details/105568942?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribut…
暂无图片
编程学习 ·

centos7 64位使用心得

一、安装宝塔面板 1、安装宝塔面板,安装方法去官网查询 2、修改默认路径,面板设置 - 默认建站目录和默认备份目录修改为: /home /home/backup二、安装云锁 1、安装最新版、提示Install Complete(安装完成),下面是安装运行代码。 wget https://download.yunsuo.com.cn/v3/…
暂无图片
编程学习 ·

Oracle-函数

文章目录SQL 函数SQL 函数分类单行函数1.字符函数1.大小写控制函数1.lower、upper、initcap2.字符控制函数1.concat2.substr3.length | lengthb4.instr5.lpad | rpad6.trim7.replace2.数字函数1.rou
暂无图片
编程学习 ·

faster-rcnn流程(mmdetection)

参考:http://chr10003566.github.io/2019/12/03/mmdetection(2)/ part1 测试mmdetection(通过读取一张图片,显示效果) demo.py from mmdet.apis import init_detector, inference_detector, show_result_pyplot import mmcvconfig_file = /home/ming/work/mmdetection/conf…
暂无图片
编程学习 ·

zabbix4版本被动模式切换到主动模式没有数据的问题解决

嘚!检查一下zabbix server和zabbix agent的时间是否同步,被动模式为zabbix server主动向agent发起数据请求,所以和时间不同步关系不大,但是主动模式是agent主动向server推送数据,这肯定会带上时间戳,server根据收到数据保存的时间进行数据保存和展示,所以数据无法实时显示…
暂无图片
编程学习 ·

Codeforces 1342 E Placing Rooks —— 第二类斯特林数

This way 题意: 现在有一个n*n的棋盘,n个棋子,你要放置这些棋子使得他们满足以下条件: 每个格子都能被某个棋子打到 共有k对棋子能够打到对方 如果一个格子所处的这一行或这一列有一个棋子,那么这个格子就能被打到。两个棋子处在同一行或同一列并且它们之间没有别的棋子,…
暂无图片
编程学习 ·

Linux下core dump学习

参考链接 在linux下开发时,如果程序突然崩溃了,也没有任何日志。这时可以查看core文件。从core文件中分析原因,通过gdb看出程序挂在哪里,分析前后的变量,找出问题的原因。 1 查看linux下core dump是否开启 在linux上coredump默认是关闭的,可以通过ulimit -c查看,如果输出…
暂无图片
编程学习 ·

堪称零瑕疵!仅用了330页直接封神,我要吹爆这份RocketMQ笔记

RocketMQ天生为金融互联网领域而生,追求高可靠、高可用、高并发、低延迟 RocketMQ在阿里集团也被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景 其主要功能有:灵活可扩展性、 海量消息堆积能力、 能够保证严格的消息顺序 提供丰富的消息拉…
暂无图片
编程学习 ·

一起Talk Android吧(第二百五十五回:Android中的Toolbar标题一)

各位看官们大家好,上一回中咱们说的是Android中Toolbar的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在前面章回中介绍完了Toolbar的导航,本章回中将介绍Toolbar的标题。标题位于导航右侧,用来提示程序的内容或者当前页面的…
暂无图片
编程学习 ·

兔(图)解之初识贪心算法

嗯,好想她呀....加油生活。 希望她好好的....剪绳子 给你一根长度为 n 的绳子,请把绳子剪成 m 段(m、n 都是整数,n>1 并且 m>1),每段绳子的长度记为 k[0],k[1],...,k[m]。请问 k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成 …
暂无图片
编程学习 ·

springboot中application.yml配置中常用的配置信息

server:port:8001mybatis:config-location:classpath:mybtais/mybatis.cfg.xml #mybatis配置文件所在路径typ-aliases-package:com.auguigu.springcloud.entities #所有Entity别名类所在包mapper-location:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:app…