📅  最后修改于: 2023-12-03 15:16:14.953000             🧑  作者: Mango
在编程中,有时需要重新排列数组中的正数和负数。这种情况下,我们希望能够实现一个高效的算法,使得重新排列的过程能够在 O(n) 的时间复杂度和 O(1) 的额外空间复杂度内完成。
本文将介绍一种使用 Javascript 实现的算法,可以实现上述需求。以下是具体的实现步骤和代码示例。
/**
* 重新排列正数和负数
* @param {number[]} nums - 包含正数和负数的数组
* @returns {number[]} - 重新排列后的数组
*/
function rearrangePositiveAndNegative(nums) {
let left = 0;
let right = nums.length - 1;
while (left < right) {
if (nums[left] < 0) {
[nums[left], nums[right]] = [nums[right], nums[left]];
right--;
} else {
left++;
}
}
return nums;
}
// 示例用法
const nums = [-1, 2, 3, -4, -5, 6, -7];
const rearrangedNums = rearrangePositiveAndNegative(nums);
console.log(rearrangedNums); // 输出: [6, 2, 3, -4, -5, -7, -1]
使用以上代码示例,可以将正数和负数重新排列,并且在 O(n) 的时间复杂度和 O(1) 的额外空间下完成。
以上就是以'Javascript 程序在 O(n) 时间和 O(1) 额外空间内重新排列正数和负数'作为主题的介绍,希望对你有帮助!