自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

原创 算法--js--组合总和

先对数组排序,当发现 candidates[i] > remain 时直接终止循环,避免无效递归。start 控制遍历起点,避免重复组合(如 [2,3,2] 和 [3,2,2])最坏情况为 O(2^n),但题目保证组合数少于 150 个,实际性能优异。递归时传递 i 而非 i+1,允许元素被重复选取。• 通过 start 参数避免重复组合。remain 表示剩余需要凑的值。• 通过排序和剪枝减少递归深度。path 记录当前组合路径。• 深拷贝避免引用问题。

2025-05-22 11:33:18 356

原创 算法--js--电话号码的字母组合

N 为输入中对应3字母的数字个数(2,3,4,5,6,8)例如输入"279"的复杂度为 O(3×4×4) = 48。内存复用:每次循环复用 temp 数组,避免内存碎片。动态扩展组合:通过迭代而非递归,减少调用栈开销。即时计算:无需预计算所有可能性,逐层生成结果。K 为最终结果的数量,与时间复杂度相同量级。M 为对应4字母的数字个数(7,9)多数字时通过笛卡尔积逐层扩展组合。输入为空字符串时直接返回空数组。单个数字时直接返回对应字母列表。

2025-05-21 16:39:08 225

原创 算法-js-最大矩形

时间复杂度:O(mn),每行处理需要O(n)时间。空间复杂度:O(n),只需存储当前行的高度数组。每个位置的高度表示:从当前行向上连续1的个数。遇到0时高度重置为0(无法形成矩形)比暴力解法的O(m²n)效率提升显著。复用柱状图算法保证每行处理的效率。2、对每行高度应用柱状图算法。

2025-05-18 22:02:23 244

原创 算法-js-柱状图中最大的矩形

维护一个存储柱状图索引的栈,保证栈中索引对应的柱子高度单调递增。空间复杂度:O(n),最坏情况下需要存储所有元素的索引。时间复杂度:O(n),每个元素最多入栈和出栈一次。当遇到较小高度时,弹出栈顶元素作为当前高度。计算宽度:当前索引 - 新栈顶索引 - 1。在数组首尾添加0作为边界哨兵。面积计算:高度 * 宽度。避免处理空栈的特殊情况。确保所有柱子都会被计算。

2025-05-18 19:02:09 230

原创 算法--字符串中出现字数最多的字符--js高效算法

算法--字符串中出现字数最多的字符--js高效算法

2025-05-08 10:50:35 203

原创 算法—合并排序—js(场景:大数据且需稳定性)

将数组递归拆分为最小单元,合并两个有序数组。

2025-04-20 18:37:31 221

原创 算法—选择排序—js(场景:简单实现,不关心稳定性)

每次从未排序部分选择最小元素,放到已排序部分的末尾。

2025-04-20 17:05:33 396

原创 算法—插入排序—js(小数据或基本有序数据)

将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。:平均 O(n²),最优(已有序)O(n)

2025-04-20 16:50:51 307

原创 算法—快速排序—js(大规模数据,通用场景)

通过选定基准值(pivot),将数组分为“小于基准”和“大于基准”的两部分,递归排序子数组。:平均 O(n log n),最差 O(n²):O(log n)(递归栈)

2025-04-20 15:56:12 141

原创 算法—冒泡排序—js(教学示例、小数据)

冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,使较大的元素逐渐“浮”到数组末尾。:平均 O(n²),最优(已有序时)O(n):稳定(相同元素相对位置不变):O(1)(原地排序)

2025-04-20 15:42:54 137

原创 算法——BFS

JavaScript 中直接用数组的 shift() 效率较低,可优化为维护一个指针(类似双端队列)。是一种用于遍历或搜索树/图的算法,逐层访问节点,适合解决最短路径、层级遍历等问题。:根据问题场景,可以用 Set、哈希表或直接修改原数据(如标记为已访问)。:用 visited 集合(或标记)记录已访问的节点,防止死循环。:从起点开始,先处理当前层的所有节点,再处理下一层。3、扩散类问题(如病毒传播模拟、社交网络层级关系):用队列(先进先出)保存待处理的节点。2、层级遍历(如二叉树层序遍历)

2025-04-14 18:19:52 277

原创 滑动窗口-最小覆盖字串

使用现代 JavaScript 语法。优化滑动窗口收缩逻辑。

2025-04-07 17:24:11 186

原创 算法:双指针法--计算两数之和

【代码】算法:双指针法--计算两数之和。

2025-04-02 17:35:52 160

原创 算法:最大单词长度乘积

方案二:用整数二进制位记录字符串中出现的字符。方案一:哈希记录暴力循环(性能略差)

2025-04-02 17:11:31 235

原创 算法:二进制求和

二进制求和

2025-04-02 10:50:32 172

原创 实现 32 位有符号整数的除法运算

【代码】实现 32 位有符号整数的除法运算。

2025-04-01 19:25:12 169

原创 js 算法-最小堆、最大堆

【代码】js 算法-最小堆、最大堆。

2025-03-17 11:11:32 209

原创 二叉树-前序遍历、中序遍历、后序遍历

方法二:非递归(栈思想)方法二:非递归(栈思想)方法二:非递归(栈思想)

2025-03-16 11:44:04 135

原创 算法-滑动窗口-用于解决 “最长无重复字符子串“ 问题

滑动窗口算法--最长无重复字符字串 的解决方案

2025-03-09 17:44:27 94

原创 js 两个对象怎么对比是否相同

• 简单数据 → JSON.stringify• 生产环境复杂对象 → lodash.isEqual• 高频次性能敏感场景 → fast-deep-equal• 特殊需求(如不可变数据) → 手写递归 + 定制逻辑。

2025-03-07 19:01:00 476

原创 while-经典面试题实战

while 强大的循环

2025-03-07 17:58:54 235

原创 js 常用的几种 图片下载的功能总结

几种常用的图片下载及会遇到的问题1、同源路径直接用a标签+download 属性:<a href="https://baidu.com" download="百度.jpg">下载</>或者用blob文件流的形式:// 获取图片文件流download (row) { const imgUrl = row.fileUrl let xhr = new XMLHttpRequest() xhr.open('get', imgUrl, true) // 至关重要

2022-03-30 22:20:28 1522

原创 vue -- 页面过多热更新加载过慢解决方案

解决方案:babel-plugin-dynamic-import-node安装:npm install babel-plugin-dynamic-import-node --save-dev使用配置:1、如果你使用的是:.babelrc就在.babelrc文件中添加:2、如果你使用的是:babel.config.js修改文件module.exports = { presets: [ '@vue/app' ], env: { development: { plugins

2021-09-01 15:23:15 2287

原创 根据id找节点

场景:给出一个节点树,根据id找出对应的节点节点树:let tree = { id: 1, children: [ { id: 2, children: [ {id: 3}, { id: 5, children: [ {id: 6} ] }, null ] }, { id: 4 }, null ]}// 写一个方法function getNode(root, id) {/

2021-08-05 12:19:19 862

原创 一个简单的抽奖函数

假定场景:写一个方法,返回 1,2,3,4 表示四种奖品,这四种奖品的概率分别是 5%,15%,25%,55%;思路,利用Math.random()的随机数,然后将四种奖品填满一个100长度的数组容器中,随机抽取;上代码:function getReward() { let arr1 = new Array(5).fill(1); let arr2 = new Array(15).fill(2); let arr3 = new Array(25).fill(3); let arr4 = new

2021-08-05 09:26:08 594

原创 axios请求-- 取消上一次的请求

问题场景:很多时候,我们的提交按钮联系点好多次,或者我们的change事件联系触发好多次,但是可能有的请求返回错误,有的有数据,接着,在接口请求超时或者是返回成功的时候,就会出现页面上可能一直在弹出请求失败的消息,而下拉中缺有数据的尴尬请求。为了解决这个问题,我们需要对axios进行处理:引入axiosimport axios from 'axios'; const CancelToken = axios.CancelToken;在全局先定义一个cancle变量window.cancle=nu

2021-08-02 11:33:19 911

原创 async、await、Promise、setTimeout执行顺序

先看一段代码: async function a2() { console.log(3) } async function a1() { console.log(1) await a2(); console.log(2); } console.log(4) a1() setTimeout(()=> { console.log(5) }) new Promise((resolve, reject)=>{ console.log

2021-07-28 11:21:27 163

原创 2020-08-12

import { axios } from '@/utils/request'/** file:文件对象*/function upFile (file) { const fileList = [ file] const formData = new FormData() fileList.foreach(file => { formData.append('file',file ) }) axios({ url:url, method: 'post',

2020-08-12 19:51:42 132

原创 递归--由子级寻找父级

/** arr原始数组;orgCode:子级code* this.orgCodeList:存放获取的数据* 主要思想就用递归的方式来循环原始数组*/getOrgCode (arr, orgCode) { for(let i= 0; i < arr.length; i++) { const item = arr[i] if (!orgCode) { return false } else if (item.orgCode === orgCode) { this.org

2020-06-04 17:53:22 1971

原创 vue 刷新 当前页面

场景页面需要重置刷新的地方刷新当前页有可以采用一下3种方式1、window.location.reload()是原生JS提供的方法,整个浏览器进行了重新加载,闪烁,体验不好2、this.$router.go(0)是vue路由里面的一种方法,整个浏览器进行了重新加载,闪烁,体验不好3、通过路由跳转的方法刷新,具体思路是点击按钮跳转一个空白页,然后再马上跳回来4、provide / i...

2019-11-27 15:20:11 199

原创 js 数组扁平化 总结

数组扁平化的几种方法本文是从网上找来的大佬文章,作了些许总结,方便用时调用,参考来源定义一个数组 const arr = [1, [2, 3, [4,[5,6,[7,8,[9,0]]]]]]一、ES6 给出的 flat() 和 flatMap()es6数组方法flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默...

2019-09-23 16:34:30 323

转载 两种勉强可以获取js 顶层对象的方法,适用于浏览器/nodejs/webworker

浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。Node 里面,顶层对象是global,但其他环境都不支持。方法一:var getGlobal = function () { if (typeof self !== 'undefined') { r...

2019-05-30 15:33:48 550

原创 小程序mpvue中flyio的使用

Fly.js 一个基于Promise的、强大的、支持多种JavaScript运行时的http请求库. 有了它,您可以使用一份http请求代码在浏览器、微信小程序、Weex、Node、React Native、快应用中都能正常运行。同时可以方便配合主流前端框架 ,最大可能的实现 Write Once Run Everywhere。本文主要介绍一下如何在微信小程序中使用flyio的配置。npm安装:...

2019-05-23 17:44:19 1246

原创 读取excel文件内容,vue+element封装的一个组件

准备:1、引入elementUI(安装详见官网);2、引入插件js-xlsx(安装:npm install xlsx --save )3、import XLSX from ‘xlsx’<template> <div> <input ref="excel-upload-input" class="excel-upload-input" type="f...

2019-04-25 10:15:33 768

原创 前端导出数据(需要有一个数据流)

这里用的是后台传的一个数据流,利用new Blob()来导出数据:postOrderExportList(obj).then(res => { if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, '订单.xls'); } else { ...

2019-04-24 19:38:27 947

原创 es6 find操作三级联动

目的:根据code["200000", "200000", "200001"]翻译省市区中文名这是原始的翻译参照json:const options = [ { value: '200000', label: '上海', children: [ { value: '200000', label: '上海', ...

2019-04-20 16:56:13 457

原创 vue ant-design table转译数据

利用 customRender这个数据来处理<template> <a-table :columns="columns" :dataSource="list" > </a-table></template><script>export default { name: "Financi...

2019-04-18 19:23:06 3895 4

原创 vue-cli3中,使用mock模拟数据的配置

1、在根目录下创建一个mock文件夹,用来存放模拟数据json文件;2、在根目录中找到vue.config.js这个文件,修改为下面的配置:const mockdata = require('./mock/test.json');module.exports={ devServer: { port:4000, before(app){ app.get('/g...

2019-04-16 09:43:45 1636

转载 纯CSS实现垂直居中的几种方法

垂直居中是布局中十分常见的效果之一,为实现良好的兼容性,PC端实现垂直居中的方法一般是通过绝对定位,table-cell,负边距等方法。有了css3,针对移动端的垂直居中就更加多样化。html结构:<div class="box box1"> <span>垂直居中</span></div>方法1:table-cell.bo...

2019-03-28 22:18:35 127

转载 js实现图片上传并预览功能

中心步骤:(1)首先需要定义好一个,src为空或者是默认图片,(2)如果src为空,就给定义好的img设置为透明:opacity:0;如果不是透明的话,会显示一个图片的标志,不美观。(3)点击上传图片后,获取上传的图片的src,将它赋值给事先定义好的,再给设置opacity:1;方法一:html代码:<div id="imgPreview"> <div id="pr...

2019-03-20 11:44:59 6019

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除