JS算法-最大数

简介: JS算法-最大数

题目


给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

输入: nums = [10,2]
输出: "210"


题解


第一种


我们先声明一个largestNumber函数,在函数接受一个参数 a,这个参数是一个数组,如果没有传入参数,默认为一个空数组。 然后在函数中我们将数组 a 中的每个元素都转换成字符串,这是因为后面排序时需要将元素转换为字符串类型。我们这里使用 map() 方法进行遍历数组中的每个元素,它的返回值是一个新的数组,我们在用参数a进行接收下,新数组中的每个元素都是原数组中的对应元素经过处理后的结果。 然后,使用冒泡排序算法对数组进行排序。重复地遍历数组,每次比较相邻两个元素,如果前面的元素大于后面的元素,则交换它们的位置,直到数组完全排序。 最后,如果数组中最大的数是 0,那么返回字符串 "0",否则将排序后的数组元素连接成一个字符串并返回。 函数中的 bubbleSort() 函数用于实现冒泡排序,它接受一个数组作为参数,使用双重循环遍历数组,每次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置。循环结束后,数组就完成了排序

var largestNumber = function (a) {
  a = a || [];
  a = a.map(function (item) {
    return '' + item;
  });
  bubbleSort(a);
  if (a[0] == '0') {
    return '0';
  }
  return a.join('');
}
function bubbleSort(arr) {
  var temp;
  var len = arr.length;
  var i, j;
  for (i = 0; i < len - 1; i++) {
    for (j = 0; j < len - 1 - i; j++) {
      if ((arr[j] + arr[j + 1]) < (arr[j + 1] + arr[j])) {
        temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}


第二种


我们这里将两个数字转为字符串相加,再将相加后的字符串转为数字返回。由于sort()默认是按升序排序,所以这里返回的是ba的组合减去a和b的组合,这样在数组排序后就能得到从大到小排列的数组,最后判断如果第一个数字是0,则说明数组中所有数字都是0,返回字符串"0",否则将数组拼接成一个字符串返回

var largestNumber = function (nums) {
  nums.sort((a, b) => {
      return ('' + b + a) - ('' + a + b)
  })
  return nums[0] ? nums.join("") : "0"
};
相关文章
|
1月前
|
算法 JavaScript 前端开发
LZH 算法的模拟实现,JavaScript 版本
LZH 算法的模拟实现,JavaScript 版本
13 0
|
3月前
|
算法 JavaScript 前端开发
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(下)
至于分发?我们可以参考一下市面上已有的一些概念做一下对比,下面是笼统的一个网络服务器的TPS预估值,也就是说彩票服务器在1秒内可以处理的最大请求数:
|
3月前
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
5天前
|
算法 JavaScript 前端开发
三个js算法
三个js算法
8 2
|
5天前
|
算法 JavaScript
js的两个常用算法
js的两个常用算法
5 1
|
11天前
|
JavaScript 前端开发 算法
【JavaScript技术专栏】使用JavaScript实现常见算法
【4月更文挑战第30天】本文介绍了如何使用JavaScript实现常见算法,包括排序、搜索和图算法。首先,通过JavaScript的`sort`方法讨论了排序算法,以快速排序为例展示了自定义排序的实现。接着,探讨了二分查找这一高效的搜索算法,并提供了实现代码。最后,解释了深度优先搜索(DFS)图算法,并给出了在JavaScript中的实现。理解并运用这些算法能有效提升编程能力。
|
2月前
|
算法 JavaScript 前端开发
游戏物理系统 - 如何在JavaScript中实现基本的碰撞检测算法?
在JavaScript中实现2D矩形碰撞检测,常用AABB方法,适合简单游戏。创建Rectangle类,包含位置和尺寸属性,并定义`collidesWith`方法检查两矩形是否相交。通过比较边界位置判断碰撞,当四条边界条件均满足时,认定发生碰撞。基础算法适用于初级需求,复杂场景可采用更高级的碰撞检测库。
14 1
|
2月前
|
缓存 JavaScript 算法
Vue.js中的diff算法:让虚拟DOM更高效
Vue.js中的diff算法:让虚拟DOM更高效
|
4月前
|
算法 JavaScript
|
4月前
|
算法 JavaScript