分类
Growth | Study
根据字符出现频率排序 根据字符出现频率排序
这类问题主要用到lambda排序 import collections m=collections.Counter(s) m=sorted(m.items(),key=lambda x: -x[1]) map<char, int> m
2021-09-08
用栈实现队列 用栈实现队列
面试题09. 用两个栈实现队列 栈A用于加入元素 栈B用于反转元素。栈顶元素就是队头元素。删除队头时 先判断 B 是否为空,只要 B 不为空, 无论 A 是否为空都是从 B 弹出元素 B为空时 若A为空,则返回-1 若A不为空,则将其转反转
2021-09-04
697-数组的度 697-数组的度
697. 数组的度 先统计一次数组,得到度 滑动窗口的左右指针用于更新并统计信息 先增大右窗口,得到符合条件的窗口后,开始缩小左窗口 class Solution { public: int findShortestSubAr
2021-09-03
11-盛最多水的容器 11-盛最多水的容器
11. 盛最多水的容器 利用双指针,不断更新面积 决定面积大小的因素:两个柱子(指针)之间的距离以及两柱子的最低高度。所以面积表示为min(height[l],height[r])*(r-l) 如果低柱子不动,让高柱子的那一侧往里跳,(r
2021-09-02
6-Z字形变换 6-Z字形变换
6. Z 字形变换 模拟遍历过程 用一个flag记录当前是不是需要从上到下(从下到上)转换方向 初始flag设为-1。记录好当前行后,判断是否需要更新flag 如果行数为0或1,则直接返回 class Solution(object)
2021-09-02
32-最长有效括号 32-最长有效括号
32. 最长有效括号括号问题常常可以用栈来处理 stack idx ; // 如果是左括号,则左括号的索引入栈 vector v; // 记录全部有效括号的索引 如果当前为右括号,且栈顶有左括号,则记录栈顶左括号的索引和当前右括号的索
2021-08-30
第四章:如何实现一个计算器 第四章:如何实现一个计算器
labuladong如何实现一个计算器 227. 基本计算器 II遇到加号,就让这个数变正遇到减号,就让这个数变负遇到乘号,就让当前的数乘上之前的数遇到除号,就让当前数被之前的数除 思路:维护一个栈,若为加减,则直接入栈。若为乘除,则栈顶元
2021-08-26
640-求解方程 640-求解方程
640. 求解方程 示例 : 输入: “x+5-3+x=6+x-2”输出: “x=2” 如果方程没有解,请返回“No solution”。 如0x=10。此时x的系数为0,常数不为0 如果方程有无限解,则返回“Infinite sol
2021-08-26
24-两两交换链表中的节点 24-两两交换链表中的节点
24. 两两交换链表中的节点 链表的题目通常可以通过画过程示意图解决 节点虽然入栈了,但是栈中节点之间的指向仍是不变的 /** * Definition for singly-linked list. * struct ListNo
2021-08-23
第三章:如何高效进行模幂运算 第三章:如何高效进行模幂运算
labuladong如何高效进行模幂运算 372. 超级次方先把问题分解为子问题 子问题1:如何高效求幂?对应以下题目: 50. Pow(x, n)快速幂解析(分治法角度) 通过x*x,每次x变为x^2; 通过n//2向下取整,n变为原来
2021-08-20
第一章:题目不让我干什么,我偏要干什么 第一章:题目不让我干什么,我偏要干什么
labuladong题目不让我干什么,我偏要干什么 341. 扁平化嵌套列表迭代器示例 :输入:nestedList = [1,[4,[6]]]输出:[1,4,6]解释:通过重复调用 next 直到 hasNext 返回 false,nex
2021-08-19
第四章:烧饼排序算法 第四章:烧饼排序算法
labuladong烧饼排序算法 969. 煎饼排序通过递归思想解决问题 (本题找到可行解即可,因此与示例的输出不一致,但仍能通过测试用例) 先把最大的烧饼放到最后面。怎么放呢? 找到最大烧饼对应的索引,翻转0到索引处的烧饼,先使最大烧饼
2021-08-19
2 / 8