算法
weixin_44029692
这个作者很懒,什么都没留下…
展开
-
最小栈O(1)空间复杂度实现
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。常见的一道题目,很多解答都是两个栈的做法,这里提供一下O(1)空间复杂度的做法。使用两个栈的原因是,我们pop出最小值的时候,需要将次最小值变成最小值,如果只用一个min来记录最小值,那么无法的到次最小值,那么关键在于,最小值变化的时候,如何得到次最小值?可以维护一个栈原创 2020-07-02 09:50:51 · 729 阅读 · 0 评论 -
一个有序数组,有重复的数,平方后,数组当中有多少不同的数字
一个有序数组,有重复的数,平方后,数组当中有多少不同的数字?例子,[-1,3,3],返回结果 2.例子,[-1,-1,1,1],返回结果 1.思路:使用双指针,对left和right的绝对值进行比较,如果不相等,那么绝对值大的一边进行收缩,并且不相等的数加一,但是要记录一下这个数的绝对值,这样碰到相同的可以越过去。比如[-1,3,3],一开始right绝对值为3,left绝对值为1,不相等,res为1,记录pre为3,右边向里面收缩一位,然后right绝对值还是3,left绝对值为1,发现right和原创 2020-07-01 10:16:02 · 545 阅读 · 0 评论 -
找出数组中出现次数大于 N/K 的数
分析数组中出现次数大于 N/K 的数之前,先来看一道简单的题目。1、找出数组中出现次数大于数组长度一半的数分析:1、在数组中一次同时删掉两个不同的元素,如果存在某个数出现次数大于数组长度的一半,那么即使每次都删,最后也会至少剩下 1 个(不可能存在两个候选人,因为不可能存在两个数都超过一半);2、第一个数字作为第一个士兵即候选人 candiate,守阵地;candiate = 1 记录候选人个数;遇到相同元素,count++; 遇到不相同元素,即为敌人,同归于尽,count- -;当遇到 count原创 2020-06-30 20:24:45 · 900 阅读 · 0 评论 -
LeetCode378. Kth Smallest Element in a Sorted Matrix解答(值域二分法)
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.Note that it is the kth smallest element in the sorted order, not the kth distinct element.Example:matrix = [[ 1, 5, 9]原创 2020-05-13 20:54:23 · 178 阅读 · 0 评论 -
非递归实现二叉树先序,中序和后序遍历(详解)
非递归遍历的实现需要借助“栈”后进先出的特性来保存节点的顺序,前序、中序、后序是相对于根节点而言,根据根节点输出的位置,根、左、右为前序遍历;左、根、右为中序遍历;左、右、根为后序遍历。1) 前序遍历(PreOrder):1.先根节点设为当前节点进行访问2.将当前节点入栈,并将其写入list,循环将左节点入栈,直到左节点为空,3.访问栈顶元素,如果栈顶元素存在右孩子,将右孩子设为当前节点,继续第二步,4.重复第2,3步,直到栈和当前节点都为空对每个结点,都是先遍历其本身,再遍历左子树,所以当从栈原创 2020-05-12 20:44:06 · 464 阅读 · 0 评论 -
LeetCode236. Lowest Common Ancestor of a Binary Tree解答 (递归)
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as de原创 2020-05-12 15:56:10 · 86 阅读 · 0 评论 -
LeetCode199. Binary Tree Right Side View解答(BFS+DFS)
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:Given the following binary tree,Example:Input: [1,2,3,null,5,null,4]Output: [1, 3, 4]Explanation原创 2020-05-12 12:06:12 · 104 阅读 · 0 评论