Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • 每日算法

    • 信
    • 独一无二的出现次数
    • 按奇偶排序数组Ⅱ
      • 两数之和
      • 两数相加2
      • 寻找两个正序数组的中位数
      • 二叉树最大深度
      • 洗牌算法
      • 移动零
      • 数组元素排列组合
      • 上升下降字符
      • 最大间距
      • 四数相加2
      • 最大三角周长
      • 在排序数组中查找元素的起始位置
      • 最富有客户的资产总量
      • 打印规定循环字符串
      • 从m个数中选择n个数的组合
      • 复原IP地址
      • 有效的数独
      • 旋转图像
      • 缺失的第一个正整数
      • 第 N 个泰波那契数
      • 轮转数组
      • 爬楼梯
      • 斐波那契数列
      • 使用最小花费爬楼梯
      • 打家劫舍
      • 删除并获得点数
      • 颜色分类
      • 字母异分词分组
      • 加一
      • N叉树的层序遍历
      • N叉树的前序遍历
      • N叉树的后序遍历
      • N叉树的深度
      • 二叉树的中序遍历
      • 和并两个有序数组
      • 移除元素
      • 删除有序数组中的重复项Ⅱ
      • 多数元素
      • 找到数组的中间位置
      • 搜索插入位置
      • 最长连续序列
      • 三数之和
      • 找到字符串中所有字母异位词
      • 有效的括号
      • 最小栈
      • 求出硬币游戏的玩家
      • Find the odd int
      • Regex validate PIN code
      • Find the next perfect square
    • 折腾

    • 分享

    • 随笔
    • 每日算法
    kros
    2020-10-12

    按奇偶排序数组Ⅱ

    描述: 给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

    对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

    你可以返回任何满足上述条件的数组作为答案。

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii

    # 方法一:暴力破解

    步骤一:现将数组分为奇偶两个数组 步骤二:循环奇数组或偶数组插入偶数组或奇数组

    var sortArrayByParityII = function(A) {
    	let oddEven = A.reduce((res, value) => {
    		if(value % 2 == 0) res[0].push(value);
    		else res[1].push(value);
    		return res;
    	}, [[],[]]);
    	// console.log(oddEven);
    	oddEven[0].forEach((value, index) => {
    		oddEven[1].splice(2 * index, 0, value);
    	})
    	// console.log(oddEven[0]);
    	return oddEven[1];
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 方法二 新空间

    步骤一:创建偶数数组和奇数数组存放不满足该位置条件的偶数或奇数,开始遍历 步骤二:如果某个位置不满足奇数,如果odd没有多余的值则添加到多余偶数even中,如果odd有值则和odd中的值进行交换并删除odd相应值 步骤三:如果某个位置不满足偶数,如果even没有多余的值则添加到多余奇数odd中,如果even有值则和even中的值进行交换并删除even相应值

    var sortArrayByParityII = function(A) {
    	let odd = [], even = [];
    	for(let i = 0; i < A.length; i++) {
    		if(i % 2 == 0 && A[i] % 2 != 0) {
    			if(odd.length > 0){
    				let a = A[odd[0]];
    				A[odd[0]] = A[i];
    				A[i] = a;
    				odd.shift();
    			}else {
    				even.push(i);
    			}
    		}else if(i % 2 == 1 &&  A[i] % 2 == 0){
    			if(even.length > 0){
    				let a = A[even[0]];
    				A[even[0]] = A[i];
    				A[i] = a;
    				even.shift();
    			}else {
    				odd.push(i);
    			}
    		}
    	}
    	return A;
    };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #算法
    上次更新: 2025/09/05, 8:09:00
    独一无二的出现次数
    两数之和

    ← 独一无二的出现次数 两数之和→

    最近更新
    01
    Find the next perfect square
    09-05
    02
    Regex validate PIN code
    09-05
    03
    Find the odd int
    09-05
    更多文章>
    Theme by Vdoing | Copyright © 2020-2025 kros king
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev