- 博客(48)
- 收藏
- 关注
原创 【无标题】
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 :输入:num = “1432219”, k = 3输出:“1219”解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。
2023-03-19 16:56:01 176 1
原创 贪心,动态规划的区别
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
2022-12-06 15:34:36 458
原创 盛最多水的容器,三数之和 ,有效的括号
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。: 从左右两边开始计算面积,底边长在求解的过程中逐渐减小,所以应用来寻找较长的范围,从而获得较大的面积。因此当左值较小时,左指针增加,右值较小时,右指针减小。三数之和:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]]
2022-12-03 14:22:36 198
原创 最长回文子串
注意: 要同时考虑字符串为奇数,和字符串为偶数的情况,但不论是奇数还是偶数,都进行revert(i,i)和revert(i,i+1),因为我们需要只是最大回文子串。lastIndexOf:从尾开始查找,找到返回索引,找不到返回-1。indexOf: 从头开始查找,找到返回索引,找不到返回-1。
2022-11-30 20:45:53 374
原创 无重复字符的最长子串
其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!使用滑动窗口的思想,在只需要遍历一次字符串的情况下,利用滑动窗口找出最长的子串。我们只要把队列的左边的元素移出就行了,直到满足题目要求!一直维持这样的队列,找出队列出现最长的长度时候,求出解!
2022-11-30 16:25:55 92
原创 防抖和节流
防抖setTimeout 会返回一个随机值用来标识自己 , 用cbFun来接收 , 等settimeout完了之后再次设置为cbFun = null ,下次点击就会进入if分支再次开启settimeout let flag; el.addEventListener( "click", (event) => { console.log(flag); if (!flag) {
2022-05-21 15:32:32 137
原创 Map 的基本使用
let map = new Map()set() 设置map元素get() 获取指定的map元素值has() 判断是否有指定map元素delete() 删除指定的map 元素clear() 清空mapentries() 返回所有元素keys() 返回所有元素keyvalues() 返回所有元素值var map = new Map()map.set(111,222)map.set(333,444)console.log(map.entries().next().valu
2022-05-21 11:21:57 905
原创 v-model
首先说明: vue是单项数据流咦 , 那么v-model的双向绑定又是什么呢? v-modle其实是一个语法糖作用在标签里面的时候v-model相当于v-bind和v-on的结合<template> <div class="home"> <!-- <input type="text" v-model="name123"> --> <!-- 等于 --> <input type="text" :value=
2022-05-19 20:14:33 183
原创 Iterator 接口
具有原生的Iterator 接口的数据结构有 :Array ,Map ,Set ,String ,TypedArray ,arguments对象 ,NodeList对象面我们来实现将class 和 object 也变成迭代的对象实现的关键就是[Symbol.iterator]函数 和 next 函数class添加iteratorclass myIterator{ constructor(data){ this.data = data } [S
2022-05-01 11:37:35 556
原创 js 判断值类型大全
typeof : 不能准确判断 null 和 Array ,会将其判断成Object类型 console.log(typeof 2); // number console.log(typeof true); // boolean console.log(typeof 'str'); // string console.log(typeof []); // object console.log(
2022-04-30 11:20:03 575
转载 linux从小白开始学习
此文章为学习笔记 , 具体请观看尚硅谷linux教学视频Vim Vi快捷键关机&重启命令用户管理添加用户 , 并且自动创建和用户同名的家目录用户相关操作全部用户保存在用户配置文件 : /etc/passwd添加用户(创建同名家目录) : useradd 用户名添加用户并指定家目录 : useradd -d 指定目录 用户名添加用户并指定组 : user add -g 用户组 用户名删除用户(没有删除家目录) : userdel 用户名删除用户并删除其家目录 :
2022-04-20 16:02:23 148
原创 js实现二分法 ,什么题目可以使用二分法
一. 先用js实现二分法 , 用二分法查找有序数组中的目标target数组: [1,2,3,4,5,6,7,8,9,10]target : 9使用二分法查找数组中的 9 ,返回找到的下标 , 没有则返回-1计算的时候有个小坑 ,js使用 /的时候是会保留小数的 , 所以要用Math.floor取整 或者使用位运算>>1没什么好讲的 , 这个模板就算你不会都要背下来var search = function(nums,target){ let left = 0
2022-04-19 21:04:17 403
原创 js实现堆 大根堆排序 小根堆排序
首先我的得到的是一个无序数组 , 要先将其构造成最大堆 , 再用堆排序得到有序的数组无序的数组 : num = [1, 6, 12, 4, 5, 7, 8, 8, 9, 10, 0]构造最大堆 : heap = [12, 10, 8, 9, 6, 7, 1, 8, 4, 5, 0]使用堆排序 : num = [0, 1, 4, 5, 6, 7, 8, 8, 9, 10, 12]构造最大堆的实现方法: 使父节点不断下沉 , 找到比父节点大的子节点 , 交换它们的位置 , 直到到达叶节点( 没有子节点
2022-04-18 17:12:58 1135
原创 排序算法总结 冒泡排序 堆排序 快排 归并...
一 . 冒泡排序二 . 快排三 . 插入排序package class01;//插入排序: 保证第一层循环i前面的元素全部都是有序的排序 public class sort_charu { public static void charusort(int[] arr) { if(arr.length<2||arr==null)return; for(int i = 1;i<arr.length;i++) { for(int j = i-1;j>=0&
2022-04-16 15:59:32 719
原创 懒加载 , 滚动加载更多
懒加载(可以在里面写防抖)这个大佬写的很详细vue项目里实现懒加载要用到 v-infinite-scroll 插件npm i v-infinite-scroll -Dimport lazyLoad from 'v-infinite-scroll' Vue.use(lazyLoad)下面的v-infinite-scroll绑定的事件load()就会在滚动条距离页面底部300px的时候触发:infinite-scroll-disabled="disabled"随着disabled的值的变化,决定
2022-04-14 17:52:30 1147
原创 vue watch 中找不到this
watch中想要监听vuex中的数据//监听vuex中path的变化 "$store.state.path":function(value){ this.parentRoute = value }要想在监听的数据中获取到this指向vm在watch中如果想要获取到this指向vm , 就必须用function , 而不能使用箭头函数 , 因为箭头函数中的this 指向的是外层函数中的this , 虽然watch中this默认指向vm , 但是箭头函数并不能获取到this指
2022-04-13 13:03:05 5342
原创 js 异或运算^
找出arr数组中 出现次数 为奇数次的数 , 有两种奇数的数let arr = [4,1,2,2,3,1,4,5]//如果只有一个出现次数是奇数的数的话 , 我们只需要对整个数组进行异或运算 , 算出来的结果就是奇数//如果有两个出现次数是奇数的数的话 , 我们就需要先对整个数组进行异或运算 ,//根据运算结果把元素组分成两个部分 , 然后再依次进行异或运算let arr = [4,1,2,2,3,1,4,5]//进行异或运算的函数let findLostNum = (arr)=>{
2022-04-10 11:00:08 5567
原创 js 实现动态规划
js实现动态规划 , 优化时间 , 优化空间详情见小灰的算法之旅 , 以下是我个人的见解题目:很久很久以前,有一位国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。例如有的金矿储量是500kg黄金,需 要5个工人来挖掘;有的金矿储量是200kg黄金,需要3个工人来挖 掘…… 如果参与挖矿的工人的总数是10。每座金矿要么全挖,要么不挖,不能 派出一半人挖取一半的金矿。要求用程序求出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?一开始的思路:首先我们想到的是 : 求出每个
2022-04-09 15:26:49 1855
原创 HTML5
一 . 新增的语义化标签header(头部) , aside(侧边栏) , footer(底部) , section(整体板块) , article , nav二 . audio , video方法 : play() 播放 , pause() 暂停 , load() 重新加载属性 : autopaly 自动播放 , loop 循环播放 , defaultMuted 静音 , paused (设置/返回暂停状态) , volume (设置/返回音量)事件 :- abort (放弃加载音视频时
2022-04-08 17:15:23 79
原创 HTML_canvas
canvas可以绘制路径 , 矩形 , 圆形, 字符 , 渐变, 以及 添加图像首先要创建一个canvas容器<canvas id="myCanvas" width="300" height="300" ></canvas>获取容器 , 并创建context对象var c=document.getElementById("myCanvas");//创建context对象var ctx=c.getContext("2d");路径(直线)- 方法: moveTo
2022-04-08 17:09:33 415
原创 js 实现链表 , 并判断链表是否循环 ,循环的长度,循环开始的点
一 . 判断一个链表是否循环 , 使用快慢指针 , 快指针每次都比慢指针多走一步 , 如果在快指针没有走到null并且与慢指针相遇了 , 那么该链表就是循环链表二 . 计算链表循环部分的长度 , 快慢指针第一次相遇 , 继续走, 当快慢指针第二次相遇的时候循环的长度 = ( 快慢指针速度差 ) * 前进次数三 . 计算入环点 , 当快慢指针第一次相遇的时候 , 将其中一个指针置为head , 将两个指针都变为慢指针 , 当两个指针第二次相遇的时候 , 前进的次数就是入环点距离head的距离//用
2022-04-01 20:54:33 5008
原创 vue刷新当前页面的方法
第一个想到的方法是this.$router.push() , 但是会报错 , 不让自己页面跳转自己页面 , 就算解决了这个问题跳转了之后 , dom也不会渲染 , 页面的数据显示不出来 , 所以查询了一下方法来解决问题location.reload() 不推荐 : 页面出现一瞬间的空白这个方法相当于( ctrl + R )刷新当前页面 , 但是刷新过后vuex里面的值也会重新刷新 , 当我们要实现多个组件根据 vuex 里面的值做相应的判断时 , 这个功能不能实现 , 于是我们结合window.se
2022-03-22 21:07:29 1855
原创 前端实现跨域
在这里记录一下跨域成功的操作在vue.config.js中设置一下代码 , 里面的target就是你要配置代理的地方,这里面后端给我的地址是 : http://bautk.free.svipss.top/enterprise/query ,所以我们要代理的地址就是http://bautk.free.svipss.topmodule.exports = { devServer:{ proxy:{ '/api':{ ta
2022-03-16 15:16:39 1326
原创 初识Echarts
安装echartsnpm install echarts --save在mian.js中引入(全局引入)import * as echarts from "echarts"Vue.prototype.$echarts = echarts开始使用echarts定义有宽度和高度的父容器初始化echarts实例指定配置项和数据将配置项设置给echarts实例对象 绘制图表1. 定义有宽度和高度的父容器<div id="main" class="main_container"&g
2022-03-11 20:35:39 1098
原创 数据持久化 , vuex中的值怎么永久保存
vuex中的值重置的原因在完成项目的时候 , 要根据 login 的状态来显示相应的组件 , 一开始很自然的想到把 login放在sessionStorage中 , 但是放在里面的数据不是响应式的 , 不能及时的更新一些数据 , 然后又想到了放在vuex中 , 但是又遇到了一刷新其中的值就重置了 , 因为vuex的数据是存储在浏览器的内存中的 , 页面刷新就会重置解决方式本地存储 + vuex初始化login里面的值的时候 , 从sessionStorage 里面拿state: {
2022-03-11 16:22:29 621
原创 力扣算法从小白开始
FindIndex 找到数组中的第一个目标值并且返回目标值的下标 , 没有找到就返回-1判断后返回值,不用手动returnconst index = nums.findIndex(item=>item===target)find 找到数组中第一个符合条件的值 , 没有找到就返回 undefined find对空数组不起作用...
2022-03-09 12:50:00 4548
原创 项目中遇到的问题以及解决方法
超过字数省略单行省略overflow: hidden;white-space: nowrap;text-overflow: ellipsis;多行省略display: -webkit-box;overflow: hidden;-webkit-line-clamp: 2;-webkit-box-orient: vertical;
2022-03-08 12:53:12 781
原创 vue项目怎么从头运行
vue项目开启之后: index.html -->main.js --> App.vue -->index.js(router中的)index.js这里面的< div id=“app”> </ div>会被App.vue完全取代main.jsmain.js 是vue项目的入口文件 , 它的作用是引入App.vue 文件 ,并且将其挂载到 index.html 中作为根组件 , 并且 mian.js 中还会创建 vm 实例import Vue from '
2022-03-06 22:17:38 929
转载 vue中的Class与v-bind绑定
v-bind用于class和style的不同情况一.对象语法active 这个 class 是否有效取决与 isActive 的值 , 且不影响普通class d1 的设置 , 并且这个div 的 class的取值一直动态的受isActive的影响<div v-bind:class="{ active: isActive }" class="d1"></div>如果isActive 为 true上面的表达式相当于<div class="d1 active">&
2022-03-06 20:15:19 457 1
原创 vue的生命周期
先放一张图上来下面开始介绍吧beforeCreate ___________vm中还没有数据created ________________vm中的数据都初始化完成beforeMount ____________Dom还没有挂载到页面上mounted _______________页面加载完成beforeUpdate ___________页面没有更新,数据已经改变,数据没有同步updated ________________页面数据和data中的数据再次同步beforeDestro
2022-03-06 17:50:11 124
原创 滚动条触底 加载下一页数据
页面再加载当我们使用返回数据量大的接口的时候,如果全部申请回来,就会影响项目的性能,滚动条触底再加载下一页数据能确保用户讲页面拉到页面底部的时候再去申请下一页的数据实现原理找到滚动条触底事件使用的是微信小程序中的 onReachBottom判断还有没有下一页数据获取到申请回来的总页数,如果只有总条数的话就用Math.ceil(总条数/页容量)判断当前的页码比较页码和总页数页码>总页数 数据加载完了 弹出一个wx.showToast提示加载完成页码<总页数 加载下一页数
2022-03-04 20:07:42 1121
原创 什么是async await
为什么要使用async await我们使用promise来处理异步操作 , 而使用async+await+promise可以实现以同步的形式来处理异步操作,提高代码的简洁性和可读性async将 async 写在函数的前面,这个函数就变成了异步函数 , 这个函数运行的时候不会阻塞后面代码的执行并且这个异步函数的返回值会变成一个promise对象async fun1( ){ return 1}实际上返回的值Promise.resolve(1)所以我们可以对 异步函数fun1 直接t
2022-03-03 15:32:14 151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人