剑指offer 13.调整数组顺序使奇数位于偶数前面
时间:2020-03-26
本文章向大家介绍剑指offer 13.调整数组顺序使奇数位于偶数前面,主要包括剑指offer 13.调整数组顺序使奇数位于偶数前面使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
13.调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路一:
定义一个等长的数组,遍历两次数组,第一次存奇数,第二次存偶数,最后把临时数组的内存拷贝到数组中
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 // 定义一个等长的数组, 4 int[] temp = new int[array.length]; 5 // 遍历两次数组,第一次存奇数,第二次存偶数 6 // 从前往后找出奇数,存入0 下标开始存, 7 int index = 0; // 临时数组的当前下标 8 for(int i = 0; i < array.length; i++){ 9 if((array[i] & 1) != 0){ 10 temp[index++] = array[i]; 11 } 12 } 13 14 for(int i = 0; i < array.length; i++){ 15 if((array[i] & 1) == 0){ 16 temp[index++] = array[i]; 17 } 18 } 19 // 把临时数组拷贝会原来的数组 20 for(int i = 0; i < array.length; i++){ 21 array[i] = temp[i]; 22 } 23 24 } 25 }
思路二:
遍历数组,把上一个奇数到当前奇数之间的偶数后移一位,把当前奇数填到上一个奇数后面,更新当前奇数的位置
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 // 遍历数组 4 int m = -1; // 当前奇数的位置 5 for(int i = 0; i < array.length; i++){ 6 7 // 如果是奇数, 记录下这个值,将 (i + 1) - j 的元素都后移一位 8 if((array[i] & 1) != 0){ 9 int j = i; 10 int temp = array[j]; 11 while(j > m + 1){ 12 array[j] = array[j - 1]; 13 j--; 14 } 15 m = j; // 更新当前奇数的位置 16 array[j] = temp; 17 } 18 } 19 } 20 }
原文地址:https://www.cnblogs.com/hi3254014978/p/12577162.html
- 数据清理的遗留问题处理(二)(r6笔记第91天)
- Kaggle Titanic 生存预测比赛超完整笔记(上)
- 多系统交互中DBA需要实现的技术细节(r6笔记第90天)
- Kaggle Titanic 生存预测比赛超完整笔记(中)
- SDP(11):MongoDB-Engine功能实现
- SDP(10):文本式大数据运算环境-MongoDB-Engine功能设计
- Kaggle Titanic 生存预测比赛超完整笔记(下)
- SDP(9):MongoDB-Scala - data access and modeling
- 数据清理的遗留问题处理(r6笔记第87天)
- 一次DB time抖动发现的expdp的bug(r6笔记第86天)
- Python中map函数
- 10g,11g中数据库静默安装中的细小差别(r6笔记第85天)
- SDP(8):文本式数据库-MongoDB-Scala基本操作
- SDP(7):Cassandra- Cassandra-Engine:Streaming
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 这几项超好用的云开发扩展能力,别说你还不知道!
- Ubuntu上一键卸载安装mysql脚本
- Python-批量修改图片全部颜色,批量修改图片的指定颜色,马甲包一键换主题UI
- 【SpringBoot DB 系列】h2databse 集成示例 demo
- MySQL 案例:analyze,慢查询,与查询无响应
- 万字图解Java多线程
- 金九银十要来了?不要慌,这些Android BAT高级面试题刷一刷
- 【SpringBoot DB 系列】Jooq 初体验
- Android轻量级APM性能监测方案
- 保持 Go 模块兼容
- Go 模块:v2 及更高版本
- 发布 Go Modules
- SRA toolkit下载数据
- 【测试开发-1】基于Springboot+layui实现接口自动化平台
- 【SpringBoot-2】SLF4J+logback进行日志记录