算法
文章平均质量分 54
奶油糖霜
这个作者很懒,什么都没留下…
展开
-
未排序数组中累加和为给定值的最长子数组长度
问题描述给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有连续子数组中累加和为k的最长子数组长度。保证至少存在一个合法的子数组。输入:[1,-2,1,1,1],0返回值:3方法分析此题除了用暴力遍历求解,还有另外一个巧妙的方法,如下:对于一个数组a,其中s[i] = a[0] + a[1] + … + a[i], s[j] = a[0] + a[1] + … + a[j]。由于 i < j, 所以 s[j] - s[i] = a[i + 1] + …原创 2021-08-13 11:14:30 · 241 阅读 · 0 评论 -
逆波兰表达式求值题解
此篇参考: https://www.cnblogs.com/lulipro/p/7450886.html逆波兰算法逆波兰算法的核心思想是将普通的中缀表达式转换为后缀表达式。中缀表达式:例如 2 + 3 ,我们最熟悉的算术表达式就是中缀表达式。后缀表达式:方便计算机处理的表达式,如 2 3 +。我们熟悉的算术表达式一般由操作数(数字)、分界符(括号)、运算符(加减乘除)组成。逆波兰算法原理求解这一类的算法题核心步骤有两个:将中缀表达式转换为后缀表达式对后缀表达式求值1、将中缀表达式转换原创 2021-08-12 16:39:45 · 492 阅读 · 0 评论 -
Leetcode 题解 - 哈希表
Leetcode 题解 - 哈希表文章目录Leetcode 题解 - 哈希表1.两数之和217.存在重复元素594.最长和谐子序列128.最长连续序列1.两数之和var twoSum = function(nums, target) { let m = new Map() for (let i = 0; i < nums.length; i++) { if(m.has(target - nums[i])){ return [m.get(target - nums[i]原创 2021-07-23 21:50:54 · 215 阅读 · 0 评论 -
Leetcode 题解 - 栈和队列
Leetcode 题解 - 栈和队列文章目录Leetcode 题解 - 栈和队列232.用栈实现队列[225. 用队列实现栈](https://leetcode-cn.com/problems/implement-stack-using-queues/)155.最小栈20.有效的括号739.每日温度503.下一个更大元素II232.用栈实现队列/** * Initialize your data structure here. */var MyQueue = function () {原创 2021-07-20 20:40:51 · 115 阅读 · 0 评论 -
Leetcode 题解 - 树
Leetcode 题解 - 树前中后序遍历[144.二叉树的前序遍历]145.二叉树的后序遍历94.二叉树的中序遍历序列化105.从前序与中序遍历序列构造二叉树106.从中序与后序遍历序列构造二叉树889.根据前序和后序遍历构造二叉树BFS遍历513.找树左下角的值DFS遍历104.二叉树的最大深度前中后序遍历144.二叉树的前序遍历迭代写法var preorderTraversal = function (root) { if (!root)原创 2021-07-18 21:34:47 · 790 阅读 · 0 评论