中山大兴网站建设,wordpress评论嵌套,建筑业企业服务平台,网站建设的功能需求文档题目描述解题思路执行结果 leetcode 905. 按奇偶排序数组 题目描述 按奇偶排序数组 给你一个整数数组 nums#xff0c;将 nums 中的的所有偶数元素移动到数组的前面#xff0c;后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1#xff1a; 输入#xff1a;… 题目描述解题思路执行结果 leetcode 905. 按奇偶排序数组 题目描述 按奇偶排序数组 给你一个整数数组 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 解题思路 法1 记录拼接法\ 1.使用两个数组分别记录奇数和偶数 循环遍历数组,将数据记录在奇数数组与偶数数组中 最后拼接输出结果数组 时间复杂度(O(n)) 空间复杂度(O(n)) 法2 方法2:双指针\ 两个指针分别指向头节点与尾节点 当尾节点为偶数,头节点为奇数时,交换位置 最后输出该数组 时间复杂度(O(n)) 空间复杂度(O(1)) 执行结果 法1 略 法2 我们使用两个指针 left 和 right 分别指向数组的开头和末尾。通过迭代比较指针位置的元素我们可以将偶数元素移到数组的前面奇数元素移到数组的后面。 具体的操作如下 如果左指针指向偶数右指针指向奇数则左指针右移一位右指针左移一位。 如果左指针指向奇数右指针指向偶数则交换左右指针位置的元素并将左指针右移一位右指针左移一位。 如果左指针指向偶数右指针也指向偶数则左指针右移一位。 如果左指针指向奇数右指针也指向奇数则右指针左移一位。 最终当左指针大于等于右指针时所有的偶数元素都已经移动到了数组的前面而奇数元素则移动到了数组的后面。 left : 0 right : len(nums) - 1 for left right { // 左指针指向偶数右指针指向奇数 if nums[left]%2 0 nums[right]%2 ! 0 { left right-- } else if nums[left]%2 ! 0 nums[right]%2 0 { // 左指针指向奇数右指针指向偶数 nums[left], nums[right] nums[right], nums[left] left right-- } else if nums[left]%2 0 nums[right]%2 0 { // 左指针指向偶数右指针也指向偶数 left } else { // 左指针指向奇数右指针也指向奇数 right-- } } return nums 执行结果 通过 显示详情 查看示例代码 添加备注 执行用时 8 ms , 在所有 Go 提交中击败了 69.23% 的用户 内存消耗 4.6 MB , 在所有 Go 提交中击败了 100.00% 的用户 通过测试用例 285 / 285 炫耀一下: 本文由 mdnice 多平台发布