首页 > 其他分享 >js计算一串数字最长子链长度

js计算一串数字最长子链长度

时间:2023-08-21 14:56:04浏览次数:42  
标签:200 arr arrLeft 长子 一串 let 186 js

假设有一串字符串"186 186 150 200 160 130 197 200";现在求它的最长升序子串长度。

let str ="186 186 150 200 160 130 197 200";
let arr = str.split(" "); // 转化为数组
let arrLeft = []; // 存储每个数左边小于其的数的个数
for(let i=0; i<arr.length; i++){
  arrLeft[i]=1; // 所有位置最小链长为1,所以可以初始设置为1
  for(let j=0; j<i; j++){
    // 如果最新的一个元素i的值大于它左边的任意位置j的值,那么把j位置链长+1和上一轮循环i处最长链长比较取最大值
    if(arr[i]>arr[j]){
      arrLeft[i] = Math.max(arrLeft[j]+1, arrLeft[i])
    }
  }
}
console.log(arrLeft); // [1, 1, 1, 2, 2, 1, 3, 4]
console.log(Math.max.apply(null, arrLeft)); // 4

上面这个是一个动态规划问题。






参考:js计算一串数字最长子链长度

标签:200,arr,arrLeft,长子,一串,let,186,js
From: https://www.cnblogs.com/weimiu/p/17646012.html

相关文章

  • nvm 管理 Node.js 版本
    通过NVM安装、管理Node.js版本(Windows)介绍NVM可以让我们通过指令安装指定版本,并且可以切换当前Node.js版本,不用花时间在解决升版和降版。安装链接:https://github.com/coreybutler/nvm-windows选择最新版nvm-setup.exe下载下载下载完成后安装同意协议......
  • JS面试题
    事件委托事件委托本质上是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会传递到父节点;因此可以把子节点的监听函数定义在父节点上(这样父节点就是绑定事件的节点),父节点可以通过事件对象获取目标节点(就是触发事件的节点),由父节点的监听函数统一处理多个子元素的事件,这种方式......
  • 【开源三方库】bignumber.js:一个大数数学库
    OpenHarmony(OpenAtom OpenHarmony简称“OpenHarmony”)三方库,是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者快速开发OpenHarmony应用。如果是发布到开源社区,称为开源三方库,开发者可以通过访问开源社区获取。接下来我们来了解bignumber.js开源三方库。bignum......
  • JS的执行还分是谁发起的?
    这一部分首先我们考虑一下,如果我们是浏览器或者Node的开发者,我们该如何使用JavaScript引擎。当拿到一段JavaScript代码时,浏览器或者Node环境首先要做的就是;传递给JavaScript引擎,并且要求它去执行。然而,执行JavaScript并非一锤子买卖,宿主环境当遇到一些事件时,会继续......
  • Threejs用官方提供的编辑器做一个简单的模型
    Threejs有提供一个web端的编辑器制作3D模型,地址是https://threejs.org/editor/,这个打开就可以在线编辑,但是因为比较简陋,所以只能做一些简单的模型用于测试,实际开发中还是用blender这种标准的建模软件来建模,首先打开页面可以看到下面的画面,(是英文版本的,不过单词都比较简单,可以凑合看......
  • 在Windows系统上,给perl安装JSON::parse module
    管理员身份打开powershell,一定以管理员身份打开:输入下面两行命令即可 cpanApp::cpanminuscpanmJSON::Parse JSON::Parse指南:https://metacpan.org/pod/JSON::Parse perlmodule安装指南:https://www.cpan.org/modules/INSTALL.html......
  • 【web_逆向11】JS处理RSA加密
    JS中RSA加密有两套逻辑1、网易的那种.->加密的结果每一次都是一样的;这种没有办法使用python来完成setMaxDigits()RSAKeyPair()encryptedString()2、某网校的rsa加密->加密的结果每一次都是不一样的;和python的Crypto是相通的.而用js完成超级简单.newJSEncrypts......
  • JSON
    什么是JSONJSON:JavaScriptObjectNotation(JavaScript对象表示法)JSON是存储和交换文本信息的语法,类似XML。JSON比XML更小、更快,更易解析。JSON易于人阅读和编写。JSON语法规则JSON语法是JavaScript对象表示语法的子集。数据在名称/值对中数据由逗号,......
  • Three.js中实现碰撞检测
    1.引言碰撞检测是三维场景中常见的需求,Three.js是常用的前端三维JavaScript库,本文就如何在Three.js中进行碰撞检测进行记述主要使用到的方法有:射线法Raycaster包围盒boundingbox物理引擎Cannon.js2.RaycasterRaycaster用于进行raycasting(光线投射),光线投射用于进行鼠......
  • windows上多版本nodejs安装和切换
    安装nvm下载地址:https://github.com/coreybutler/nvm-windows/releases下载exe安装即可。查看nvm版本: 查看已安装的nodejs版本: 安装Nodejs,比如安装版本v14.21.3执行命令:nvminstall14.21.3然后输入:nvmuse14.21.3指定当前使用的nodejs版本 ......