Javascript高级—常见算法

大数相加问题

  function sumString(a, b){a = a + '';b = n + '';var arrA = a.spilt(''),arrB = b.spilt(''),distance = arrA.length - arrB.length,   // 计算两者的长度差,取最大的那个作为基准点len = distance > 0 ? arrA.length : arrB.length,carry = 0;        // 表示相加之后的进位// 把长度小的那个数组的前面用0补齐,让两者的位数相同if (distance > 0){for (var i = 0; i < distance; i++) {arrB.unshift('0');}} else {for (var i = 0; i < Math.abs(distance); i++) {arrA.unshift('0');}}var res = [];// 开始从数组的最后一位向前遍历,相同位数对应相加for (var i = len - 1; i >= 0; i--) {var temp = +arrA[i] + (+arrB[i]) + carry;if (temp >= 10) {// 6+7=13, 只需要取出最后一位carry = 1;// 先把数组转换为字符串,然后拿出来最后一位数res.push((temp + '')[1]);} else {carry = 0;res.push(temp + '');}}// 将数组转换为字符串输出return res.join('').replace(/^0/, '');}

URL转换为json对象

// url = ?name=zhangsan&age=18&sex=25
function getQueryObject(url){// 参数校验url = url == null ? window.location.href : url;var search = url.substring(url.lastIndexOf('?') + 1);// 开始进行字符串解析name=zhangsan&age=18&sex=25// +代表匹配一个或多个,零个肯定是不行的。*代表0个或多个,这里value没有是允许的。那么这里要注意的就是^在单独使用时,代表以什么开头,在中括号里面使用代表不包含的意思// 中括号里面的内容相当于是或的意思:表示除了?,&,=这三个字符以外的其他所有字符var reg = /([^?&=]+)=([^?&=]*)/g;var obj = {};// 其中res表示匹配成功的字符串序列,$1,表示第一个()内所匹配的内容,$2为第二个,依次类推。当我们使用全局匹配时,只要匹配成功的子串最后都会执行一遍function函数search.replace(reg, function(res, $1, $2){// name=zhangsan,age=18,sex=maleconsole.log(res, $1, $2);obj[$1] = $2;});return obj;
}

JSON转换为URL?

 // data={name : 'zhangsan', age : 'lisi'}function parseParams(data){var key, i, value, tempArr = [];for (i in data) {key = encodeURIComponent(i);value = encodeURIComponent(data[i]);tempArr.push(key + '=' + value);}return tempArr.join('&');}

使用两个数组实现一个定长的队列?

JS先奇数后偶数排序

  // v1. 分开写的实现思路function sortArray(arr){arr.sort((a, b) => {// 1. 先把奇数放在前面,把偶数放在后面if (a % 2 === 0 && b % 2 === 1) {// 如果前面的元素是奇数的话,而且后面的元素是偶数的话,就去交换return 1;}})arr.sort((a, b) => {// 1. 把前面的那部分奇数,和后面的那部分偶数按照从小到大的顺序排序if (a > b && (a % 2 === 1 && b % 2 === 1)) {return 1;}if (a > b && (a % 2 === 0 && b % 2 === 1)) {return 1;}});}// v2. 代码优化版本function sortArray(arr){arr.sort((a, b) => {if (a % 2 === 0 && b % 2 === 1) {return 1;}if (a > b && (a % 2 === 1 && b % 2 === 1) || (a % 2 === 0 && b % 2 === 1)) {return 1;}});}

求数组最长递增子序列长度

/*** 求数组最长递增子序列* @param arr*/
function getMaxSequenceNumbers(arr){let res = [];res.push(arr[0])for (let i = 1, len = arr.length; i < len; i++) {// 开始处理resif (arr[i] > res[res.length - 1]) {res.push(arr[i]);}else {// 小于等于的话// 需要在res中找到第一个大于arr[i]的元素,然后替换掉这个元素(二分查找)let index = binarySearch(res, arr[i]);if (index) {res[index] = arr[i];}}}return res.length;
}function binarySearch(arr, val) {let l = 0, r = arr.length - 1;while (l <= r) {let mid = Math.floor(l + (r - l) / 2);if (val < arr[mid]) {r = mid - 1;}else if (val > arr[mid]) {l = mid + 1;}}// 最终的l就是找到的结果,arr中第一个大于val的元素位置return l;
}console.log(getMaxSequenceNumbers([5, 6, 7, 1, 2, 8]));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统常用操作与命令指南

一、快捷分类 1、移动光标 h&#xff0c; j&#xff0c; k&#xff0c; l 左&#xff0c; 下&#xff0c; 上&#xff0c; 右 Ctrl-F:下翻一页 Ctrl-B:上翻一页 Ctrl-U:上翻半页 Ctrl-d:下翻半页 0:跳至行首&#xff0c;不管有无缩进&#xff0c;就是跳到第0个字…

Kafka 与 RabbitMQ 的联系

Kafka 与 RabbitMQ 的区别与联系 一、引言 在现代软件架构中&#xff0c;消息中间件扮演着至关重要的角色。它们帮助系统解耦、提高可伸缩性并确保数据的可靠传递。在众多消息中间件中&#xff0c;Apache Kafka 和 RabbitMQ 是最受欢迎的选择之一。虽然它们都用于消息传递&am…

读取文件内容、修改文件内容、识别文件夹目录(Web操作系统文件/文件夹详解)

前言 因 Unicode IDE 编辑器导入文件、文件夹需要&#xff0c;研究了下导入文件/文件夹的功能实现&#xff0c;发现目前相关文章有点少&#xff0c;故而记录下过程&#xff0c;如果有误&#xff0c;还望指正。(API的兼容性及相关属性、接口定义&#xff0c;请自行查看文件系统 …

SQLite 全文检索:快速高效的文本查询方案

文章目录 什么是全文检索&#xff1f;如何启用 FTS&#xff1f;插入数据执行全文检索关联原始表与 FTS 表数据更新结论 说明: 本文以博客内容全文检索为例。 什么是全文检索&#xff1f; 全文检索是指对文本数据进行索引和查询的一种技术。与常规的 LIKE 查询不同&#xff0c…

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; gitee地址 文章目录 卡尔曼滤波数据融合Python实现C语言实现多个数据如何融合附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Pac…

docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中

云机的服务器是可以docker拉取镜像的&#xff0c;但是本地的虚拟机、物理服务器等网络环境不好的情况&#xff0c;是无法访问docker-hub的&#xff0c;即使更换了docker镜像源国内源也无法使用。 本文章使用 在魔法网络环境下的windows&#xff0c;下载docker images后&#xf…

vxe-vxe-colgroup后端返回数据 对数据进行处理 动态合并分组表头(v-if控制表格渲染(数据请求完成后渲染))

1.html vxe-colgroup循环合并数据&#xff1b;v-if控制表格渲染&#xff08;数据请求完成后渲染&#xff09; <template><vxe-table v-if"isTableReady" :data"tableData"><vxe-colgroup title"基本信息"><template v-for…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1

1.使用快捷键CtrlAltT打开命令终端&#xff0c;或者单击右键点击… 2.常用shell命令 目录信息查看命令&#xff1a;ls ls -a&#xff1a;显示目录所有文件及文件夹&#xff0c;包括隐藏文件&#xff0c;比如以.开头的 ls -l&#xff1a;显示文件的详细信息 ls -al&#xff1…

WordPress 6.7 “Rollins”发布

每个 WordPress 版本都会向一位在音乐界留下不可磨灭印记的艺术家致敬。WordPress 6.7 的代号为“Rollins”&#xff0c;旨在向传奇爵士萨克斯演奏家桑尼罗林斯致敬。罗林斯是爵士乐界最伟大的即兴演奏家和先驱之一&#xff0c;他以精湛的技术、创新精神和无畏的音乐表达方式影…

ESXi安装【真机和虚拟机】(超详细)

项目简介&#xff1a; ESXi&#xff08;Elastic Sky X Integrated&#xff09;是VMware公司开发的一种裸机虚拟化管理程序&#xff0c;允许用户在单一物理服务器上运行多个虚拟机&#xff08;VM&#xff09;。它直接安装在服务器硬件上&#xff0c;而不是操作系统之上&#xff…

SQL Server中,CONVERT函数转换日期

在SQL Server中&#xff0c;CONVERT函数支持多种样式代码&#xff08;style codes&#xff09;&#xff0c;用于指定日期和时间的格式。样式代码 23 是一种常用的格式&#xff0c;表示 yyyy-mm-dd。以下是一些常用的样式代码&#xff1a; 日期格式样式代码 0 or 100 - mon dd…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台&#xff0c;后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码&#xff0c;这就是若依的强大之处&#xff0c;即便你不会Java和vue开发&#xff0c;只要跟着石头哥也可…

学习日志010--python异常处理机制与简单文件操作

一.异常处理机制 经常使用qq的朋友们都知道&#xff0c;QQ不时会让你升级&#xff0c;有心的小伙伴在升级日志里会看见许多已修复了XXX。奇怪&#xff0c;当我们编写程序时发生错误时总会叫停整个程序&#xff0c;而这些软件上出现种种错误&#xff0c;去不影响我们平时的使用…

HBuilder(uniapp) 配置android模拟器

HBuilder&#xff08;uniapp&#xff09; 配置android模拟器 选择完成之后&#xff0c;点击ok&#xff0c;再次点击Configure—》AVD Manager

flutter插件:录制系统播放的声音

该插件基于flutter包 flutter_screen_recording 和 github库 SystemAudioCaptureAndroid&#xff0c;实现了在安卓手机上录制系统播放声音的功能&#xff0c;也就是说&#xff0c;只要一个安卓应用没有设置不允许其它应用录制声音&#xff0c;该插件可以录制该应用播放的声音。…

Mac中安装OhMyZsh

Mac中安装OhMyZsh 文章目录 Mac中安装OhMyZsh一、Homebrew二、OhMyZsh1、Oh-My-Zsh配置1.1&#xff1a;主题配置1.2&#xff1a;插件配置&#xff08;语法高亮和自动提示&#xff09;1、zsh-autosuggestions&#xff08;需下载安装&#xff09;&#xff1a;高亮显示所有支持的命…

MVVM(Model-View-ViewModel)模型

MVVM&#xff08;ModelViewViewModel&#xff09;模型是一种常用于软件开发中的架构模式&#xff0c;尤其在前端框架&#xff08;如 Vue.js、React、Angular&#xff09;中被广泛应用。它将程序的用户界面与业务逻辑分离&#xff0c;便于维护和扩展。 MVVM 的三个组成部分 1. …

golang如何实现sse

Server-Sent Events (SSE) 的实现主要是通过逐步读取 HTTP 响应体并以事件流的形式将数据推送到客户端。下面我会详细解释代码中如何实现 SSE。 SSE (Server-Sent Events) 简介 SSE 是一种在客户端与服务器之间建立单向持久连接的技术&#xff0c;允许服务器在有新数据时主动推…

生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)

前置环境 macOS系统&#xff0c;已安装homebrew且会相关命令。 近期在整理草稿区&#xff0c;所以放出该贴。 R语言、RStudio、R包安装 R语言安装 brew install rRStudio安装 官网地址&#xff1a;https://posit.co/download/rstudio-desktop/ R包下载 注意R语言环境自带…