前端算法
一只小傲娇
这个作者很懒,什么都没留下…
展开
-
【剑指Offer刷题:JavaScript实现】平衡二叉树
参考链接题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树一棵空树或它的任意节点的左右两个子树的高度差的绝对值均不超过1。解题思路递归遍历二叉树结点分别计算每个结点左右子树的高度3.比较左右子树高度差绝对值是否大于1代码实现/* function TreeNode(x) { this.val = x; this.left = null; ...原创 2020-04-07 11:22:10 · 177 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】栈的压入、弹出序列
参考链接题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路引入辅助栈,将压入栈的元素依次压入辅助栈同时将辅助栈的栈顶元素同...原创 2020-03-22 14:58:22 · 119 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】包含min函数的栈
参考链接题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。解题思路引入辅助栈,空间换时间minStack和dataStack元素个数相同,其中minStack栈顶始终为最小值代码实现let dataStack=[];let min...原创 2020-03-22 14:26:07 · 112 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路1.定义新的排序规则2.将a、b链接为字符串比较ab和ba的大小3.如果ab>ba,则a排在b之后,如果ba<ab则a排在b之前,如果ab=ba两者顺序不变代码实现function ...原创 2020-03-21 13:51:09 · 215 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】:和为S的连续正数序列
参考链接题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正...原创 2020-03-21 10:02:22 · 163 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】二叉搜索树的后续遍历
参考链接题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路二叉搜索树左子树节点值都比根节点值小,右子树节点值都比根节点值大。二叉树后序遍历的最后一个节点是根节点。以根节点为flag从前往后找出所有比根节点小的树,即左子树,找出所有比根节点大的节点,即右子树。递归对左子树和右子树进...原创 2020-03-20 15:16:35 · 87 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】把二叉树打印成多行-树
参考链接题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路层序遍历二叉树的每一层,队列存储每一层的节点定义变量start、end控制每一层的节点是否都输出代码实现/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */f...原创 2020-03-19 11:05:02 · 147 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...原创 2020-03-17 14:29:40 · 148 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】剪绳子
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述输入一个数n,意义见题面。(2 <= n <= 60)输出描述...原创 2020-03-16 13:25:59 · 244 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】树的子结构
参考链接题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路分析要查找树A中是否存在和树B结构一样的子树,可以分成两步:1.第一步在树A中找到和B的根节点的值一样的结点R;这实际上就是树的遍历。可以用递归实现递归调用HasSubTree遍历二叉树A。如果发现某一结点的值和树B的头结点的值相同,则转向第2步判断两个结点为根的数是否存在父子关...原创 2020-03-11 20:40:31 · 114 阅读 · 0 评论 -
【剑指Offer刷题:JavaScript实现】二进制中1的个数
题目考察二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示相关知识点参考链接:(MDN)JavaScript位运算符位运算符将它的操作数视为32位元的二进制串(0和1组成)而非十进制八进制或十六进制数。例如:十进制数字9用二进制表示为1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准的JavaScript数值。位运算符代...原创 2020-03-09 18:55:57 · 154 阅读 · 1 评论 -
【剑指Offer刷题:JavaScript实现】连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2020-03-11 10:53:19 · 134 阅读 · 0 评论 -
前端算法练习day day up
LeetCode 算法练习26. 删除排序数组中的重复项题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。...原创 2019-09-17 18:52:15 · 172 阅读 · 0 评论 -
前端算法练习day day up
LeetCode 算法练习1.两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路(1)遍历数组,在遍历过程中求targe...原创 2019-09-06 09:03:38 · 234 阅读 · 0 评论