锦囊妙计-Java 基础-面试题 Ⅰ
50d587fd195ba3e2fcf7fcd8dbdf856b7a1e0369497308f6f2f9f7a9948ca482ced565a5b964a0831d93c243d65a3300f653f442f84072b0834f2d48434039dfa8536223ed1d320a4a69c13e5b5f1be1fbbb30ceb9cfce3b6191a831028c7443ca6a663c7eb2fadcbeffdef299514869442f87a94275028cf3661cf97b7bc1e0b1a28cd3ceb67b4a05925ab29b81fff5daf0d26c25f18ed8cab6151b0b950c0d53497b7fc0301f6a2f5c2e1b5fd528efd0b200a60c308fe49ec3d368ed3fdabc8acea9d05de4836ad5a26ca48d7b27377da02992077b3fb6ebcd834c730f1c508a4a501a1c0af8ec9dd24f88a5460f4cf66b96f4e80d56559 ...
算法导学-5-栈队列类型题目
掌握情况
题目
通关
用栈实现队列
未通过
用队列实现栈
未通过
有效的括号
未通过
删除字符串中的所有相邻重复项
逆波兰表达式求值
未通过
滑动窗口最大值
未通过
前 K 个最大元素
用栈实现队列 232. 用栈实现队列
问题
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
算法思想
将一个栈作为输入栈,用于压入 push 传入的数据;另一个栈作为输出栈,用于 pop 和 peek 操作
每次 pop 或 peek 时,若输出栈为空,则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序
参考答案
123456789101112131415 ...
算法通关 20 - 图论
图论基础图的存储图的遍历最小生成树算法最短路径算法
算法通关 19 - 动态规划
参考资料
动态规划其实很简单
动态规划
动态规划入门理解动态规划
左神 DP 思路
1.分析可变参数的范围,构造表格
2.标出计算的终止位置
3.标出不要计算直接出答案的位置 base case
4.推普遍位置如何依赖其他位置的
5.定出严格表依次计算的顺序
斐波那契数列 509. 斐波那契数
问题
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
12F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
动态规划
确定dp数组以及下标含义
dp[i]:第i个数的斐波那契数值为dp[i]
确定dp递推公式
dp[i]=dp[i−1]+dp[i−2]
初始化dp数组
12dp[0] = 0;dp[1] = 1;
确定dp数组遍历顺序
根据 dp 公式, dp[i]是依赖 dp[i - 1]和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的
举例推导dp数 ...
算法通关 18 - 回溯
回溯思想
通关进度
题目
说明
组合
通关
输出二叉树的所有路径
通关
路径总和
通关
参考资料
透彻理解什么是回溯
暴力递归
回溯模板
1234567891011void dfs(param) { if (终止条件) { 存放结果; return; } for (选择本层集合元素) { 处理节点; dfs(); 撤销处理; }}
回溯解决的问题
组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等
回溯模板
回溯类似 N 叉树 遍历
1234567891011void order(TNode root) { if (root == null) { // 递归终止条件 return; ...
算法通关 17 - 贪心思想
贪心基础问题贪心高频问题