![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
offer
李常常查德
lhx1515032021@163.com
展开
-
全排列
let str = 'abc'; const getPL = str =>{ if(typeof str !== 'string'){ return false; } const getFun = str => { if(str.length <=1...原创 2020-02-28 18:49:11 · 122 阅读 · 0 评论 -
面试题:从输入url到页面展示
1.dns解析为什么需要dns解析?TCP/IP协议只认识ip地址,不认识域名,域名的设计为了方便记忆,让你记住一个baidu.com远比记录一个180.101.49.12靠谱.具体什么是dns解析?d=domain n=name s=system域名系统解析,就是把名字转换成ip怎么做dns解析(dns解析的过程)如果你输入的是一个ip,那么显而易见,你不需要dns解析。把输入...原创 2020-01-08 18:03:23 · 170 阅读 · 0 评论 -
剑指offer:js实现把数字翻译成字符串
题目:给定一个数字,我们按照如下的规则把它翻译为字符串:将 0-25 分别对应翻译到 a-z 字符,如 0 翻译成 a,以此类推。一个数字可能有多少种翻译。例如,12258 有 5 种不同的翻译,分别是 “bccfi”、”bwfi”、”bczi”、”mcfi”、”mzi”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。思路:递归寻找,从后往前,寻找规律const getStri...原创 2019-12-29 21:13:15 · 284 阅读 · 0 评论 -
算法题:关于穷举
关于穷举可能有的人会说,穷举的效率最差,时间复杂度和空间复杂度最高。但是对于应届生校招来说,穷举是最容易想到的思路了。可能你在算法领域才刚刚入门,很多题目的思路也不清晰,这时候又来了一份笔试题,空着意味着gg,硬着头皮找思路却写不出来最后想写穷举却频频出错。不如在刷算法题的时候有针对性的先手写穷举的思路与代码,也能很好的理一理代码。我在今后写算法题的时候,能的话尽量会去写出穷举的代码。...原创 2019-12-29 16:41:00 · 273 阅读 · 0 评论 -
剑指offer:js实现把数组排成最小的数
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印出最小的一个数。输入[3,32,321] 打印出 321323思路:穷举得出最小值 const getArrPl = arr =>{ if(!Array.isArray(arr)){ return false; } const getFun =...原创 2019-12-29 16:25:51 · 246 阅读 · 0 评论 -
剑指offer:js实现求数字序列中某一位的数字
题目:数字以012345678910111213…序列化,请编写一个函数,输入第n位找到第n位的数字比如5 输出5 13输出1 19输出4 1001输出7思路:穷举出所有的数字,每穷举出一个数字,总长度加上这个数字的长度。如果总长度大于n,那么需要输出的数字就在当前数字中 //求出数字所对应的位数 const getNumW = n =>{ //或者ret...原创 2019-12-29 14:38:19 · 397 阅读 · 0 评论 -
js实现循环队列
队列:先进先出 function Queue(len){ let _arr = new Array(len+1); let front = 0; let rear = 0; this.enQueue = function(item){ if(this.isFull()){ ...原创 2019-12-26 11:52:03 · 292 阅读 · 0 评论 -
剑指offer:js实现连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数,数组的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值思路:使用穷举法,把所有的可能列出来举例分析规律如果累加时发现累加到了一个负数,数字越来越小,则把之前的数存起来,他可能是一个最大值。如果累加的和变成了负数,那么应该把这次的和去掉,换一个头 let arr = [1,2,3,-2,5]; const f...原创 2019-12-26 11:39:46 · 348 阅读 · 0 评论 -
剑指offer:js实现字符串的排序
题目:给定一个字符串,输出他的全排列。abc=>abc,acb,bac,bca,cab,cba思路:使用递归,当长度为1的时候,直接输出,长度大于1,循环,将每个位置的字符串分别设置为固定点。比如我们在算abc的全排列的时候,我们先输出abc,acb 然后a的排列做完了,就是bac,bca我们将该固定点的值取出,让剩下的值进入递归 const ff = str => {...原创 2019-12-25 11:49:18 · 188 阅读 · 0 评论 -
剑指offer:js实现最小栈
题目:定义栈的数据结构,使新的栈可以用O(1)的时间复杂度获取最小值思路:使用第二个栈来存储最小值 function Stack(){ let arr = []; let minArr = []; this.getMin = ()=>{ return minArr[minArr.length-1]; ...原创 2019-12-16 16:50:26 · 105 阅读 · 0 评论 -
剑指offer:js实现二叉树镜像
题目:给定一个二叉树,将该二叉树镜像输出思路:画图即可知道左右子节点分别交换可得 let tree = { value:0, left:{ value:1, left:{ value:3, left:{ v...原创 2019-12-12 14:47:58 · 166 阅读 · 0 评论 -
剑指offer:js实现正则表达式匹配
题目:实现 正则表达式. * 的匹配思路:当模式中的第二个字符不是“*”时:如果字符串第一个字符和模式中的第一个字符相匹配,那么字符串和模式都后移一个字符,然后匹配剩余的。如果 字符串第一个字符和模式中的第一个字符相不匹配,直接返回false。当模式中的第二个字符是“*”时:如果字符串第一个字符跟模式第一个字符不匹配,则模式后移2个字符,继续匹配。如果字符串第一个字符跟模...转载 2019-12-12 11:21:17 · 131 阅读 · 0 评论 -
剑指offer:js实现pow函数
题目:实现 pow(实数,整数),求实数的整数次方,不考虑大数问题.思路:让实数循环相乘整数次,但是要考虑负数的情况,负数要取倒数,0的倒数无意义 let myPow = (n,e)=>{ let flag = true;//判断是否为负数 if(e<0){ flag = false; e = -...原创 2019-12-12 10:10:56 · 517 阅读 · 1 评论 -
剑指offer:js实现二进制中1的个数
题目:给出一个整数,求出这个数转换成二进制中出现1的个数思路:n&(n-1) 可以消掉末尾的一个1,循环直到0为止常规解法不应该使用n来作为右移,负数右移0x80000000变成0xC000000C = 1100 8 = 1000function f(n){ let i = 0; while(n!=0){ n = n&(n-1) ...原创 2019-12-11 15:56:01 · 235 阅读 · 0 评论 -
剑指offer:js实现剪绳子
题目:给你一根长度为n的绳子,请剪成m段n>1,m>1,使剩下的绳子乘积为最大值.例:8 => 2 * 3 * 3 = 18思路:动态规划,比如8,第一次切割可以分成8-1种切法,将最优解存储起来。let n = 8;function cut(){ let res = [0,1,2,3]; return function(n){ if(n&...原创 2019-12-11 15:17:05 · 344 阅读 · 0 评论 -
剑指offer:js实现斐波拉契数列
剑指offer:js实现斐波拉契数列题目:前两项为1,第三项起每一项是前两项的和思路:递归的常见题function fib(n){ if(n < 3){ return 1; } return fib(n-1)+fib(n-2)} function fib2(n,a1=1,a2=1){ if(n<3){ r...原创 2019-12-10 17:30:38 · 113 阅读 · 0 评论 -
剑指offer:js实现两个栈模拟队列
剑指offer:两个栈模拟队列题目:使用两个栈来模拟队列思路:模拟先入先出的特点,出栈时使用另一个栈来反转原来栈里的内容,已达到先入先出的效果。function Queue() { let s1 = []; let s2 = []; this.enqueue = function (ele) { s1.push(ele); } this...原创 2019-12-09 16:28:01 · 127 阅读 · 0 评论