剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(简单)

通过率 64.2%

题目链接

题目描述:

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

示例:

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

提示:

0 <= nums.length <= 50000
1 <= nums[i] <= 10000

思路:

双指针,一个从头开始找偶数,一个从尾开始找奇数,然后将两指针对应的值交换,直到两指针碰面

习惯性去看Krahets大神的题解,涨知识了:x&1 位运算 等价于 x%2 取余运算,即皆可用于判断数字奇偶性。

注意:位运算的优先级低,记得加括号,否则会先执行 1 === 1 和 1 === 0

 1 /*JavaScript*/
 2 /**
 3  * @param {number[]} nums
 4  * @return {number[]}
 5  */
 6 var exchange = function(nums) {
 7     let i = 0, j = nums.length - 1
 8     while(i < j) {
 9         while(i < j && (nums[i] & 1 ) === 1) i++
10         while(i < j && (nums[j] & 1 ) === 0) j--
11         const temp = nums[i]
12         nums[i] = nums[j]
13         nums[j] = temp
14     }
15     return nums
16 };

 

posted @ 2021-08-30 00:17  自在逍遥处  阅读(30)  评论(0编辑  收藏  举报