一、题目
二、分析
1.判断奇偶性:nums[i] %2 == 0 ;除于等于零 为偶 反之为奇数
2.第一种方法:创建两个新数组分别为:奇数 和 偶数 存放的数组,然后利用条件进行判断,将每个nums[i] 放到相应数组里,再里用到 cancat() (方法用于连接两个或多个数组) JavaScript Array concat() 方法 (w3school.com.cn) 时间复杂度:O(n) 3.第二种方法:双指针,一头指向数组头部,一头指向数组尾部,头指针向右进行直到找到偶数,尾指针向左进行直到找到奇数,然后位置互换,执行上一步;时间复杂度 O(n)三、代码/** * @param {number[]} nums * @return {number[]} */ var exchange = function(nums) { let a = new Array(); let b = new Array(); let n = nums.length; for( let i = 0 ; i <= n-1 ; i++){ if( nums[i] %2 == 0 ){ b.push(nums[i]); }else{ a.push(nums[i]); } } return a.concat(b); };
/** * @param {number[]} nums * @return {number[]} */ var exchange = function(nums) { let n = nums.length; let i = 0, j = n -1; if( !n){ return []; } while( i < j){ while( i < n && nums[i]%2 ) i++; while( j >=0 && nums[j]%2 == 0) j--; if( i<j ){ [nums[i],nums[j]] = [nums[j],nums[i]]; i++; j--; } } return nums; };