欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

2025/2/13 17:54:22 来源:https://blog.csdn.net/Tyro_java/article/details/145588341  浏览:    关键词:数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

按奇偶排序数组

  • https://leetcode.cn/problems/sort-array-by-parity/description/

描述

  • 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。

返回满足此条件的 任一数组 作为答案。

示例 1

输入:nums = [3,1,2,4]
输出:[2,4,3,1]

解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

示例 2

输入:nums = [0]
输出:[0]

提示

  • 1 <= nums.length <= 5000
  • 0 <= nums[i] <= 5000

Typescript 版算法实现


1 ) 方案1: 两次遍历

function sortArrayByParity(nums: number[]): number[] {const n: number = nums.length;let index: number = 0;const res: number[] = new Array(n).fill(0);// 第一次遍历,将偶数放入结果数组for (const num of nums) {if (num % 2 === 0) {res[index++] = num;}}// 第二次遍历,将奇数放入结果数组for (const num of nums) {if (num % 2 === 1) {res[index++] = num;}}return res;
}

2 ) 方案2: 双指针 + 一次遍历

function sortArrayByParity(nums: number[]): number[] {const n = nums.length;const res = new Array(n).fill(0);let left = 0, right = n - 1;for (const num of nums) {if (num % 2 === 0) {res[left++] = num;} else {res[right--] = num;}}return res;
};

3 ) 方案3: 原地交换

function sortArrayByParity(nums: number[]): number[] {let left = 0, right = nums.length - 1;while (left < right) {while (left < right && nums[left] % 2 === 0) {left++;}while (left < right && nums[right] % 2 === 1) {right--;}if (left < right) {const temp = nums[left];nums[left] = nums[right];nums[right] = temp;left++;right--;}}return nums;
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com