每日算法之调整数组顺序使奇数位于偶数前面(一)
2023-03-31 10:43:00 时间
JZ21 调整数组顺序使奇数位于偶数前面(一)
描述
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:
既然要把所有的奇数放在数组前面,所有的偶数放在数组后面,那可以统计奇数在原数组中出现了多少次,这样就可以找到二者的分界线。
有了分界线以后,前面就是奇数,后面就是偶数,可以利用两个指针分别指向二者的开头,遇到一个元素就添加到相应位置,然后指针移动。
具体做法:
step 1:遍历数组,统计奇数出现的次数,即找到了偶数开始的位置。
step 2:准备一个和原数组同样长的新数组承接输出,准备双指针,x指向奇数开始的位置,y指向偶数开始的位置。
step 3:遍历原数组,遇到奇数添加在指针x后面,遇到偶数添加在指针y后面,直到遍历结束。
代码
package mid.JZ21调整数组顺序使奇数位于偶数前面1;
import jdk.nashorn.internal.ir.CallNode;
import sun.awt.geom.AreaOp;
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArray(int[] array) {
// write code here
if (array == null || array.length == 0) return new int[0];
int[] res = new int[array.length];
int right = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) != 0) right++;
}
int left = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 0) {
res[right] = array[i];
right++;
} else {
res[left] = array[i];
left++;
}
}
return res;
}
}
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十