算法
记录自己的算法学习.
缓月
认真且怂~
展开
-
js-最长不含重复字符的子字符串
题目:解答:/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function (s) { const set = new Set(); let i = 0, j = 0, maxLength = 0; if (s.length === 0) { return 0; } for (i; i < s.length; i++) { if (原创 2020-05-14 07:12:05 · 617 阅读 · 0 评论 -
按照图片数组顺序队列加载图片(加载完一张再加载下一张)
// 有一个数组:// const imgs = [‘url1’,‘url2’,‘url3’,…];// 请实现效果:// 请按照图片数组顺序队列加载图片(注:加载完一张再加载下一张)const images = ['url1','url2','url3']const loadImg = (url) => { return new Promise(resolve => {...原创 2020-03-19 19:16:05 · 1369 阅读 · 0 评论 -
...在js中的使用
看到一道算法题很简洁的解法:(用的是...这样三个点)题目描述:给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。/** * @param {number[]} A * @param {number} m * @param {number[]} B * @param ...原创 2020-03-03 21:30:25 · 1180 阅读 · 0 评论 -
基本JavaScript:排队等候问题
首先了解一下js数组中的东西: 1. push()方法可以在数组的末属添加一个或多个元素 2. shift()方法把数组中的第一个元素删除 3. unshift()方法可以在数组的前端添加一个或多个元素 4. pop()方法把数组中的最后一个元素删除function nextInLine(arr, item) { // Your code here arr.push(ite...原创 2019-07-26 10:25:50 · 1073 阅读 · 0 评论 -
JavaScript利用迭代和递归两种方法计算一个数的阶乘
首先要知道数n的阶乘,定义为n!,表示从1到n的整数的乘积。利用for循环来实现:function factorial(number){ if (number<0) return undefined; let total =1; for (let n = number;n>1;n--){ total = total * n; } return total;...原创 2019-09-06 23:47:33 · 1106 阅读 · 0 评论 -
JavaScript栈常见的6种操作
栈常见的6种操作:push(element):添加一个新元素到栈顶位置pop():移除栈顶的元素,同时返回被移除的元素。peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。isEmpty():如果栈里没有任何元素就返回true,否则就返回false。size():返回栈里的元素个数。这个方法和数组的length属性很类似。toString():将...原创 2019-09-12 18:57:10 · 814 阅读 · 1 评论 -
每日一道算法题之反转数字
想要的效果大概是这样:123 -> 321456 -> 654思路:取余数e.g. 123456123456%10=6123456/10=1234512345%10=512345/10=12341234%10=41234/10=123123%10=3123/10=1212%10=212/10=11%10=11/10=0这里就是不断地取余,1...原创 2019-10-02 10:49:10 · 872 阅读 · 0 评论 -
算法时间复杂度和空间复杂度概念
参考文章:掘金时间复杂度和空间复杂度的高低共同决定着一段代码质量的好坏:时间复杂度一个算法的时间复杂度反映了程序运行从开始到结束所需要的时间。把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。没有循环语句,记作O(1),也称为常数阶。只有一重循环,则算法的基本操作的执行频度与问题规模n呈线性增大关系,记作O(n),也叫线性阶。常见的时间复杂度有:O(1): Constant ...转载 2019-10-15 23:51:17 · 690 阅读 · 0 评论 -
数据结构与算法——思维导图总结学习
在github上发现一个人,然后又看到他掘金上的一篇文章,写的真的太棒了啊。原文地址下面是我对他文章的总结,制成了一个思维导图大表。(不过我用的是在线思维导图编辑器,超链接都无效了啊啊啊,原文可以找到哦~)...原创 2019-10-16 12:27:43 · 866 阅读 · 0 评论 -
前端该如何学习数据结构与算法
转载的一篇掘金大佬的文章,已经经过大佬的同意哟~原文链接我把它总结成一个思维导图,详情可见我上一篇文章:数据结构与算法——思维导图总结学习。一、导读据我了解,前端程序员有相当一部分对“数据结构”和“算法”的基础概念都不是很清晰,这直接导致很多人在看到有关这部分的内容就会望而却步。实际上,当你了解了“数据结构”和“算法”存在的真正意义,以及一些实际的应用场景,对它有了一个整体的认知之后,你...转载 2019-10-16 19:31:43 · 1720 阅读 · 0 评论 -
JavaScript剑指Offer刷题——二维数组的查找
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:二维数组的定义:二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i...原创 2019-10-18 21:30:20 · 319 阅读 · 0 评论 -
JavaScript剑指offer刷题——旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目理解 这道题说“把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。”其实我这里没有很懂,...原创 2019-10-21 17:54:33 · 317 阅读 · 0 评论 -
JavaScript剑指offer刷题——调整数组顺序使奇数位于偶数前面
题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路首先题目要求奇数在数组的前半部分,偶数在数组的后半部分,所以要利用双指针来做。oddBegin表示奇数,oddCount表示偶数,首先用一个for循环找出来奇数的个数,则第一个偶数所在的位置就是奇数个数的下标在数组中...原创 2019-10-22 19:28:18 · 361 阅读 · 0 评论 -
JavaScript剑指offer刷题——把数组排成最小的数
题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路这个题可以理解为拼接字符串。题目中例子说输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目的三个数字拼接起来可以是332321,332132,323213,323321,32...原创 2019-10-26 10:13:29 · 392 阅读 · 0 评论 -
JavaScript剑指offer刷题——连续子数组的最大和
题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和...原创 2019-10-26 19:31:25 · 612 阅读 · 1 评论