- 博客(83)
- 资源 (1)
- 收藏
- 关注
原创 HTML实体编码
HTML实体编码首先通过一个例子来说明一下HTML实体编码的重要性// 前端<!DOCTYPE html><html lang="en"><meta charset="utf8" /><head> <title>测试</title> <style></style
2021-08-22 15:54:32 8509 3
原创 ts问题小总结
display:none的元素更改为display:block为何不可以和其他属性修改一样触发动画呢?这是因为display属性刚开始是none,所以还没有创建,改为block之后需要等待js渲染队列更新但是transition属性在一开始就有了,所以transform改变元素的时候并没有触发动画解决方法:让元素获取dom.offsetHeight,触发js渲染队列更新,让元素先展示出来。<!DOCTYPE html><html><head> <.
2020-09-07 23:26:26 26061
原创 两数之和(js版本,双指针法和哈希表法)
双指针法var twoSum = function(numbers, target) { // 双指针法决定l,r,但是不能二分查找,也就是需要一个个遍历。(使用m会错过) var l=0,r=numbers.length-1; // 下标从1开始 while(l<r){ if(l!=r&&numbers[l]+numbers[r]==target) return [++l,++r] if(numbers[l]+nu.
2020-07-09 23:18:20 2635
原创 深度优先遍历——岛屿数量(js版本)
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:11110110101100000000输出: 1输入:11000110000010000011输出: 3解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。var numIslands = function(grid) { var num=0;
2020-06-12 21:21:58 2810
原创 力扣leetcode——滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。关键在于时间复杂度。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7
2020-06-12 19:24:51 371
原创 leetcode力扣中等难度 每日温度 739题
根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。使用数据结构为{val:index_arr},键值为数组
2020-06-11 11:56:43 286
原创 leetcode 905题 按奇偶排序数组
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。数组法,时间复杂度高 var sortArrayByParity = function(A) { var a=[],b=[] A.forEach((item)=>{ if(item%2==
2020-06-09 11:34:53 2555
原创 typescript编译出错依旧能生成js文件
function sayHello(person: string) { return 'Hello, ' + person;}let user = [0, 1, 2];console.log(sayHello(user));上面会因为类型问题编译出错,但是依旧会生成对应的js文件function sayHello(person) { return 'Hello, ' + person;}var user = [0, 1, 2];console.log(sayHello
2020-06-08 20:58:41 1209
原创 typescript——使用export报错
使用export default导出多个对象报错/* ts中使用export default导出多个内容时会出错 *//* export default { MongoDb, MysqlDb, save, getData} */// 应该改为直接exportexport class...export function...直接在浏览器中使用ts编译后的js文件报错// 编译后的js文件有 exports.__esModule = true;需要在node环境下或者使用w.
2020-06-05 19:17:05 2487
原创 leetcode力扣299——猜数字游戏
你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用 A 表示公牛,用 B 表示奶牛。请注意秘密数字和朋友的猜测数都可能含有重复数字。输入: secret = “1807”, guess = “7810”输
2020-06-04 19:17:55 209
原创 LeetCode力扣567题——字符串的排序
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).输入: s1= “ab” s2 = “eidboaoo”输出: False第一种解法:滑动窗口暴力解法!var checkInclusion = function(s1, s2) { if(s1.length==0||s2.le
2020-06-01 11:19:43 521
原创 typescript使用ES6语法会报错!(步步分析)
首先我刚开始使用typescript运行let/const都会报错然后上网查找原因,发现是版本问题,但是我下载的是最新版本呀,提示是3.9.3其实不是的,下载执行的命令是cnpm i -g typescript,虽然显示的是3.9.3,但是去环境变量中查看却是1.0.0版本虽然不知道为什么下载的是1.0版本,但是找到原因确实是版本问题了所以删除该环境变量删除文件夹然后重新安装最新版的typescript显示是3.9.3版本最后再次执行,发现可以使用ES6语法了!...
2020-05-30 16:01:37 1448
原创 leetcode力扣415题(js语言)——字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。// 一,暴力解法 var addStrings = function(num1, num2) { // 不能使用BigInteger,那么就遍历吧 var tem=0;
2020-05-25 19:05:47 417
原创 前端算法(中等难度)——三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum思路:先选定第一个数,然后
2020-05-15 19:15:01 317
原创 前端算法——数组移动
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。var rotate = function(nums, k) { // 传递的是数组的引用,需要改变引用的数组而不是返回新数组 // 并且需要注意k大于长度的时候依旧需要变换! k=k%nums.length if(nums.length>1){ nums.splice(0...
2020-04-21 11:14:28 291
原创 数学——不用额外变量交换两个整数的值
var line=readline().split(' ').map(Number)var a=line[0]var b=line[1]// 使用a保存a和b的差a=b-a;//3-2=1// b=b-两数之差b=b-a;//3-1=2// a=两数之差+原来的aa=a+b;//1+2=3console.log(a,b)...
2020-04-17 21:35:45 221
原创 数据结构——两个栈构建一个队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。// 按照题意,那么应该要创建两个数组// 然后push是添加到一个数组的末尾// 然后pop的话,需要借助另一个数组,把之前的队列清空,然后才能弹出末尾元素var inStack = [],outStack = [];function push(node) { // write code her...
2020-04-16 19:22:30 247
原创 前端基础笔记——构建乘积数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)* 直接遍历也是可以的,但是时间复杂度为O...
2020-04-15 21:07:20 172
原创 前端——二叉树编程题两道
1. 操作给定的二叉树,将其变换为源二叉树的镜像。function Mirror(root){ // write code here if(!root) return null; var left,right; if(root.right){ left=Mirror(root.right); } if(root.left){ ...
2020-04-15 18:33:10 316
原创 前端基础笔记——求整数之和(多种方法)
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。function Add(num1, num2){ // 第一种方式,也使用了加号,但是在eval函数内 // return eval(`num1+num2`) // 第二种方式,通过把数字转换为二进制,然后切割成数组,把数组遍历进行计算 // 但是第二种方式遇到负数就抓瞎了。。 ...
2020-04-14 23:14:17 572
原创 前端基础笔记——在正则中要保留分隔符要使用()
解析加减法运算如:输入字符串:"1+2+3" 输出:"6"输入字符串:"1+2-3" 输出:"0"输入字符串:"-1+2+3" 输出:"4"输入字符串:"1" 输出:"1"输入字符串:"-1" 输出:"-1"已知条件:输入的运算都是整数运算,且只有加减运算要求:输出为String类型,不能使用内建的eval()函数// 在正则中,使用括号()会保留该分隔符!!!var old...
2020-04-08 17:04:54 242
原创 前端基础笔记——字符串压缩
对字符串进行RLE压缩,将相邻的相同字符,用计数值和字符值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。// 由于压缩条件是相邻,所以要遍历一遍var str=readline();var mystr='';var tem=str[0];var num=0for(var i=0;i<str.length;i++){ if(str...
2020-04-07 18:03:53 745
原创 前端基础笔记——字符串最小变换次数(使用递归)
给定两个字符串,已知可以使用三种方式进行变换1. 插入一个字符2. 删除一个字符3. 更改一个字符请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字符串2// 假定变换规则是 1. 串1长度大于串2的时候,删除字符// 2. 串1长度小于串2的时候,添加字符// 3. 串1长度等于串2的时候,替换字符// 如果仅仅是这种思路,那么只能通过50%。。。va...
2020-04-07 16:56:29 674
原创 前端基础笔记——千分数格式化(包含小数)
function formatToThousands(num){ num=String(num); var arr=num.indexOf('.')!=-1?num.split('.'):num; var str="" var len=arr.length>1?arr[0].length:arr.length; num=arr.length>...
2020-04-07 00:51:18 446
原创 前端基础笔记——短字符串
给定任意一个较短的子串,和另一个较长的字符串,判断短的字符串是否能够由长字符串中的字符构建出来,且长串中的每个字符只能用一次。// 思路很简单,关键在于,不要多次使用indexOf,那么每次都是n的时间复杂度// 所以会通过率很低,解决办法就是使用字典存储来代替长长的字符串,这样就可以不去使用indexOfvar line=readline().split(' ')var small=...
2020-04-06 23:25:25 238
原创 前端基础笔记——英文字符串排序(包含非字母)
编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y// 思路,一个数组存储字母(排序后的)// 一个...
2020-04-03 13:22:57 1150
原创 前端基础笔记——斐切那波数列(复杂度O(n))
// 如果使用之前那种调用函数的方式是不行的。。一直return func(m-1)+func(m-2),复杂度不止O(n),因为很多计算重复了,例如func(1)会用到两次var num=parseInt(readline())var m=[1,1];for(var i=2;i<=num;i++){ var tem=m[0]+m[1]; m.shift(); ...
2020-04-02 20:30:22 691
原创 前端基础笔记——数组变换
给定一个数组arr,请将数组调整为依次相邻的数字,总是先<=、再>=的关系,并交替下去。比如数组中有五个数字,调整成[a,b,c,d,e],使之满足a<=b>=c<=d>=e。61 2 3 4 5 61 3 2 5 4 6// 思路:观察规律就是,如果是有序的数组,那么只要每隔两个数进行交换,那就可以了// 如果数组长度<=2,那么就不改变f...
2020-04-01 23:37:45 499
原创 前端基础笔记——子串的最大累加和(时间复杂度为O(n))
给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)// 注意:字符串和为负数时就看下一个索引!var len=parseInt(readline());var arr=readline...
2020-04-01 21:15:26 373
原创 前端数学——求阶乘的最低位为1的索引
* 给定一个非负整数N,如果用二进制数表达N!的结果,返回最低位的1在哪个位置上,认为最右的位置为位置0* `首先使用一种笨方法。。通过率低 50%`// 首先使用笨方法求阶乘var num=parseInt(readline());function mynum(num){ if(num==1){ return 1; }else{ retur...
2020-04-01 18:58:17 250
原创 前端基础笔记——求连续子数组的最大和(简单递归)
一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0var arr=readline().split(',').map(Number);var len=arr.length;var max=0;// 第一层是窗口大小,第二层是起始索引for(var i=1;i<=len;i++){ for(v...
2020-04-01 00:05:10 319
原创 前端基础笔记——中缀表达式转后缀(简易版无括号,校招真题)
将中缀表达式转为后缀表达式,输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 +-*/,按照四则运算顺序确定优先级,不包含括号* 输入 a+b*c/d-a+f/b* 输出 abc*d/+a-fb/+var arr=readline().split('');// 设置权重对象var obj=...
2020-03-31 22:52:01 278
原创 前端基础笔记——判断一年第几天
输入年、月、日,计算该天是本年的第几天。 输入: 包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。 输出: 输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。2000 5 1 => 122// 闰年的话,二月有29天,否则2月28天// 闰年...
2020-03-30 20:31:45 269
原创 前端基础笔记——添加运算符 dfs(额,不知道算不算,反正做出来了)
给出一个数字N,对于数字序列 1,2,3 ... N。现在在其中插入“+”, "-", " ",使得表达式的和为M。" "的含义是把相邻的两个数字组成一个数。例如:1 + 2 3 - 4,含义是:1 + 23 - 4 = 20。给出N和M,求出所有合法的序列的个数。两个整数N,M ( 1 <= N <= 7, -100 <= M <= 100)因为n<=7,所以...
2020-03-30 20:14:12 278
原创 前端算法——等差数列(快速排序)
* 如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。* 输入包括两行,第一行包含整数n(2 ≤ n ≤ 50),即数列的长度。* 第二行n个元素x[i](0 ≤ x[i] ≤ 1000),即数列中的每个整数。// 思路:其实很简单,首先进行快速排序,然后如果存在重复的元素则不行// 计算第一个和第二个元...
2020-03-28 11:01:00 499
原创 前端基础笔记——去重后依旧字典序
* 给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。* 虽然牛客上的通过率很高,但是这不是很简单的题额,需要仔细找出规律* dbcacbca =>dabc* acbc => abc---var line=readline().split('');var flag={index:0,value:line[0]};va...
2020-03-28 10:17:53 277
原创 前端基础笔记——判断出栈顺序是否正确
已知栈的压入顺序,判断弹出顺序是否正确。 function mysort(pushV,popV){ // 出栈顺序是否正确根据辅助栈的长度,如果为0则表示可以全部出栈 var arr=[pushV[0]]; for(var i=0;i<popV.length;i++){ // 栈顶元素不等于当前元素则继续入栈 if(arr[arr.lengt...
2020-03-26 18:22:33 277
原创 前端基础笔记——通过setTimeout实现setInterval
class myinterval{ constructor(){ this.stop=false } on(func,wait){ var that=this; var timer=setTimeout(function(){ if(that.stop){ clearTimeout(timer) }e...
2020-03-26 11:02:16 238
原创 前端笔记——五角星评分(半星+一星 鼠标移动版)
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } html,body{ ...
2020-03-22 12:01:41 852
原创 前端算法——修改字符使得字符串变成字典序
* `字典序就是按照字母排序,fedcba这样!有序的!`* 输入包括两行,第一行一个字符串s,字符串s长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母* 第二行一个字符串t,字符串t长度length(1 ≤ length ≤ 50),t中每个字符都是小写字母* 输出一个字符串,即可以得到的字典序最大字符串* fedcba* ee* `输出feeeba`...
2020-03-18 19:36:57 394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人