首页 > 编程语言 > 详细

整数组顺序使奇数位于偶数前面

时间:2020-08-07 11:21:13      阅读:118      评论:0      收藏:0      [点我收藏+]

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

示例:

输入:nums = [1,2,3,4]
输出:[1,3,2,4] 
注:[3,1,2,4] 也是正确的答案之一。

解法:

二,双指针实现
我们可以使用两个指针left和right。left从左边开始扫描,如果是奇数就往右走,如果遇到偶数就停下来(此时left指向的是偶数),right从右边开始扫描,如果是偶数就往左走,如果是奇数就停下来(此时right指向的是奇数),交换left和right指向的值。继续循环,直到left==right为止。我们就以数组[3,2,4,9,5,8,1]为例来画个图看一下

技术分享图片

 

 

 1 /*调整数组顺序使奇数位于偶数前面*/
 2     public int[] exchange(int[] nums) {
 3         if (nums == null | nums.length == 0) {
 4             return nums;
 5         }
 6         int letf = 0;
 7         int right = nums.length - 1;
 8         while (letf < right) {
 9             while (letf < right && nums[letf] % 2 == 1) {
10                 letf++;
11             }
12             while (letf < right && nums[right] % 2 == 0) {
13                 right--;
14             }
15             if (letf < right) {
16                 int temp = nums[letf];
17                 nums[letf] = nums[right];
18                 nums[right] = temp;
19             }
20         }
21         return nums;
22     }

 

整数组顺序使奇数位于偶数前面

原文:https://www.cnblogs.com/0error0warning/p/13451229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!