本文主要是介绍NC77 调整数组顺序使奇数位于偶数前面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
示例1
输入:
[1,2,3,4]
复制返回值:
[1,3,2,4]
复制
示例2
输入:
[2,4,6,5,7]
复制返回值:
[5,7,2,4,6]
复制
头尾双指针,一次遍历,头处理奇数,尾处理偶数;
时间复杂度:O(N)
空间复杂度:O(N)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public int[] reOrderArray (int[] array) { // write code here //双指针,头尾指针 int[] nums = new int[array.length]; int head = 0; int tail = array.length-1; int index_head = head; int index_tail = tail; while(head < array.length && tail >= 0){ if(array[head] % 2 == 1){ //奇数,放前面 nums[index_head] = array[head]; index_head++; } head++; if(array[tail] % 2 == 0){ //从后到前,如果为偶数,则从后开始填 nums[index_tail] = array[tail]; index_tail--; } tail--; } return nums; } |
这篇关于NC77 调整数组顺序使奇数位于偶数前面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!