关闭

js算法_奇偶分割数组

时间: 2018-11-07阅读: 1341标签: 算法

分割一个整数数组,使得奇数在前偶数在后。  比如:给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。


增加一下难度:

给定乱序数组:[2, 5, 1, 6, 3, 4],返回[1, 3, 5, 2, 4, 6]


思路分析:

排序好的数组:找到奇数进行操作。

乱序的数组:使用sort方法进行排序+提取奇数


代码实现:

1、排序好的数组找到奇数进行操作

const partitionArray = arr => {
  let num = arr.length - 1;
   // 其实如果是乱序数组,可以在这里使用sort将数组排序好再走下面那部分也可以
  // 倒序遍历
  for (let i = num; i >= 0; i--) {
    if (arr[i] % 2 !== 0) {
      let item = arr.splice(i, 1); // 将当前值取出来
      arr.unshift(item[0]); // 添加到首位
    }
  }
  return arr;
};
console.log('输出', partitionArray([1, 2, 3, 4]));


2、乱序数组,排序+取奇数偶数

这种方法无疑是更好的解决方法,事实上涉及排序最好都是使用sort进行排序

const partitionArray = arr => {
  return arr.sort((a, b) => {
    if (a % 2 !== 0 && b % 2 !== 0) {
      // 当两个数都是奇数的情况下 按大小排序
      return a - b;
    } else if (a % 2 === 0 && b % 2 === 0) {
      // 当两个数都是偶数的情况下也是按大小排序
      return a - b;
    } else if (a % 2 !== 0) {
      // 当a是奇数 要排在b的前面
      return -1;
    } else if (b % 2 !== 0) {
      // 当b是奇数 排在a的前面
      return 1;
    }
  });
};
console.log(
  '输出',
  partitionArray([1, 2, 3, 4]),
  partitionArray([2, 5, 1, 6, 3, 4])
);


来源链接:http://obkoro1.com/2018/11/04/算法-奇偶分割数组/


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1278

关闭

PageRank算法的定义与来源、以及PageRank算法原理

PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由 根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。

Js加密算法_Base64

首先有个小Tips,1个字母字符 = 1个字节(byte) = 8位(bit),这是表示单位.Base64是网络上最常见的用于传输 8bit 的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

js字典树算法_Trie树(字典树)实现与应用

字典树又称Trie树、前缀字,单词查找树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。 字典树是处理字符串常见的一种树形数据结构

JS常见简单算法排序

我们面试中经常会遇到排序算法问题,我整理了冒泡排序、选择排序、插入插排等常见简单排序方法。希望此文想对了解排序的前端同学有所帮助。为了简单高效演示算法的实现思路,我先封装一个构造函数

js算法_js判断一个字符串是否是回文字符串

什么是回文字符串?即字符串从前往后读和从后往前读字符顺序是一致的。例如:字符串aba,从前往后读是a-b-a;从后往前读也是a-b-a

js算法-查找斐波纳契数列中第N个数

所谓的斐波纳契数列是指前2个数是 0 和 1 ,第 i 个数是第 i-1 个数和第i-2 个数的和。下面我们来用js获取菲波那契数列的第N个数为多少:递归、闭包+缓存、直接计算出该数列的值得数组,然后再从数组中取值 、直接使用数学表达式

js生成32位uuid算法总汇_js 如何生成uuid?

GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

Js找出数组中出现次数最多的元素

给定一个数组,找出数组中出现次数最多的元素。给定数组 nums = [3,1,2,1,3,4,3,5,3,6,3], 函数应该返回: 次数最多的元素为:3, 次数为:5

js之反转整数算法

将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 ;当尾数为0时候需要进行舍去。解法:转字符串 再转数组进行操作,看到有人用四则运算+遍历反转整数。

indexOf实现引申出来的各种字符串匹配算法

我们在表单验证时,经常遇到字符串的包含问题,比如说邮件必须包含indexOf。我们现在说一下indexOf。这是es3.1引进的API ,与lastIndexOf是一套的。可以用于字符串与数组中。一些面试经常用问数组的indexOf是如何实现的

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!