Harry's Blog
博客
分类
标签
归档
友链
关于
博客
分类
标签
归档
友链
关于
Harry 的个人空间
博客
分类
标签
归档
关于
数据结构(6): 单调栈
特性单调栈是一种特殊的栈数据结构,它满足元素的单调性(单调递增或单调递减)。与普通栈相比,单调栈在出栈时有一定的规则,使得出栈后栈中的元素仍然保持单调性。 单调栈主要有两个操作:入栈和出栈。入栈时,先判断栈顶元素是否符合单调性,如果不符合,则将其弹出,一直重复此过程直到符合单调性后再入栈;出栈时,弹出栈顶元素即可。 算法应用单调栈在算法中有许多应用,例如在求解 Next Greater El...
2023-04-02
数据结构
数据结构
阅读全文
数据结构(5): 栈|队列|堆
6.1 栈6.1.1用两个栈实现一个队列LeetCode No.232 题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty): 思路: 两个栈一个栈做队头(出元素),另一个栈做队尾(入元素) 每次push只需要push到尾栈 pop时如果头栈为空则将尾栈全部“倒入”头栈,如果头栈不为空取出栈顶元素返回,否则返回失败(...
2023-03-19
数据结构
数据结构
阅读全文
数据结构(4): 树
4.1 根据前序与中序序列构造二叉树LeetCode No.105 问题描述:根据一棵树的前序遍历与中序遍历构造二叉树。 思路:根据二叉树的前序和中序(或后序和中序)的序列可唯一构造一棵二叉树,必须要有中序。前序遍历的第一个为根节点,找到根节点在中序中的位置,中序左边的节点都是根节点的左子树,右边的同理,然后可以用递归的方式求解。 示例代码: type TreeNode struct &...
2023-03-19
数据结构
数据结构
阅读全文
数据结构(3): 链表
3.1 删除单向链表倒数第n个节点LeetCode No.19 问题描述:删除单向链表倒数第n个节点(只遍历一次)Input: head = [1,2,3,4,5], n = 2Output: [1,2,3,5] 思路:两个指针,p1先走n步,然后p1和p2再一起走,当p1到链表结尾,p2就是要删除的节点。注意处理可能删除的是头结点(n=length)或者不...
2023-03-19
数据结构
数据结构
阅读全文
数据结构(2): 数组
2.1 大于n/k次的元素LeetCode No.229 题目描述:给一个整数数组,找出所有出现次数大于n/3的元素。Input: nums = [3,2,3]Output: [3] 摩尔投票法: 一般情况一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/k ⌋ 次的元素。n/k的众数最多只有k - 1个,原因:假设有k个众数,则...
2023-03-19
数据结构
数据结构
阅读全文
数据结构(1): 字符串
1.1 字符串移位 问题:将字符的前k个字符移到字符串结尾。Input:“abcde”,2Output:“cdeab” 三步翻转法: 将字符串分为前k位和后(n-k)位两部分,将两部分分别翻转,最后再整体翻转即可。时间复杂度:T = O(n)参考原文 示例代码: // 反转字符串 func reverse(s string) string { runes :=...
2023-03-19
数据结构
数据结构
阅读全文