Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
- 给定一个非负整数数组
A,返回一个数组,在该数组中,A的所有偶数元素之后跟着所有奇数元素。 - 你可以返回满足此条件的任何数组作为答案。
- 示例:
- 输入: [3,1,2,4]
- 输出: [2,4,3,1]
- 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
- 提示:
1 <= A.length <= 50000 <= A[i] <= 5000
二、思路分析:
- 按照奇偶顺序排序数组,首先需要判断数组的每一项是奇数还是偶数
- 然后再根据它的奇偶性去排序(插入位置)
- 所以第一步需要遍历数组中的每一项,判断每一项的奇偶性(
0算偶数) - 第二步,根据奇偶性确定插入位置,这里有两种做法
- 第一种:如果是偶数,添加到定义好的数组变量的头部,如果是奇数,添加到数组变量的尾部
- 第二种:定义两个数组变量,一个保存奇数,一个保存偶数,遍历完数组后,利用数组的
concat方法将两个数组连接起来,返回一个新数组- 也可以不利用
concat返回[...letfArr, ...rightArr]
- 也可以不利用
三、AC 代码:
- 第一种:
function sortArrayByParity(nums: number[]): number[] {
let result: Array<number> = [];
nums.forEach(item => {
if(item % 2 === 0){
result.unshift(item);
} else {
result.push(item);
}
})
return result;
};
- 第二种:
function sortArrayByParity(nums: number[]): number[] {
let letfArr: Array<number> = [];
let rightArr: Array<number> = [];
nums.forEach(item => {
if(item % 2 === 0){
letfArr.push(item);
} else {
rightArr.push(item);
}
})
// return [...letfArr, ...rightArr]
return letfArr.concat(rightArr);
};
四、总结:
- 题目简单难度,可以优化下执行时间
- 更多解题方式,移步题解区