10 2020 档案

摘要:思路 思路来源:https://leetcode-cn.com/problems/validate-stack-sequences/ 1 class Solution { 2 public: 3 bool validateStackSequences(vector<int>& pushed, vec 阅读全文
posted @ 2020-10-28 16:03 拾月凄辰 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目描述 对任意给定的n,输出 1,2,…,n 的所有出栈顺序。 输入 正整数 n(1≤n≤9) 输出 输出 1,2,…,n 的所有出栈顺序 示例 输入: 3 输出: 3 2 1 2 3 1 2 1 3 1 3 2 1 2 3 思路 这题是递归、回溯的思想,对于当前元素,只有2种操作: (1) 进栈 阅读全文
posted @ 2020-10-28 15:42 拾月凄辰 阅读(3669) 评论(0) 推荐(0) 编辑
摘要:思路 方法一:辅助栈 (单调栈) 这里参考:面试题30. 包含 min 函数的栈(辅助栈,清晰图解) 相似题目:剑指 Offer 59 - I. 滑动窗口的最大值 1 class MinStack { 2 private: 3 stack<int> A; 4 stack<int> B; 5 publ 阅读全文
posted @ 2020-10-28 14:35 拾月凄辰 阅读(79) 评论(0) 推荐(0) 编辑
摘要:思路 模拟。思路来自:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/solution/mian-shi-ti-29-shun-shi-zhen-da-yin-ju-zhen-she-di/ 代码实现 1 clas 阅读全文
posted @ 2020-10-28 13:45 拾月凄辰 阅读(81) 评论(0) 推荐(0) 编辑
摘要:思路 一开始想用左根右遍历的序列和右根左遍历的序列进行比较,如果相等则镜像对称。后来发现这种方式不对,比如样例[1, 2, 2, null, 2]就不是镜像对称的,但这种方法会返回true。 方法一:递归 1 /** 2 * Definition for a binary tree node. 3 阅读全文
posted @ 2020-10-27 11:18 拾月凄辰 阅读(76) 评论(0) 推荐(0) 编辑
摘要:思路 方法:先序遍历,递归 1 class Solution { 2 public: 3 TreeNode* mirrorTree(TreeNode* root) { 4 if(root == NULL) { 5 return NULL; 6 } 7 8 TreeNode* tmp = mirror 阅读全文
posted @ 2020-10-25 11:23 拾月凄辰 阅读(77) 评论(0) 推荐(0) 编辑
摘要:思路 方法一:如果B的先序序列是A的先序序列的子序列,并且B的中序序列也是A的中序序列的子序列,则B是A的子结构。这种方法比较暴力。 方法二:对A的每一个结点和B进行比较(这里可以使用先序遍历): 如果A->val == B->val,则A的左子树和右子树也要和B对应的左子树右子树相同。 如果A-> 阅读全文
posted @ 2020-10-25 09:56 拾月凄辰 阅读(88) 评论(0) 推荐(0) 编辑
摘要:思路 解法一:双指针法 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NUL 阅读全文
posted @ 2020-10-24 11:10 拾月凄辰 阅读(172) 评论(0) 推荐(0) 编辑
摘要:思路 方法一:常规解法 只检查每个字符后面的字符,需要判断的地方有: 1. 消去字符串的前置空格和后置空格,比如“1 ”是合法的 2. 正负号: (1) 只能出现在第1个字符,或者出现在e或E的后1个字符; (2) 正负号的后面一个字符必须是数字, 或者小数点 (3) 最多只有2个正负号 3. 指数 阅读全文
posted @ 2020-10-23 14:09 拾月凄辰 阅读(145) 评论(0) 推荐(0) 编辑
摘要:思路 (1) 不考虑n很大的情况 1 class Solution { 2 public: 3 vector<int> printNumbers(int n) { 4 vector<int> res; 5 int m = 1; 6 for(int i = 0; i < n; ++i) 7 m = m 阅读全文
posted @ 2020-10-23 08:58 拾月凄辰 阅读(119) 评论(0) 推荐(0) 编辑
摘要:思路 二分求幂模板题。注意边界-2147483647的处理。 二分求幂的算法见: https://www.cnblogs.com/FengZeng666/p/11484835.html 代码实现 1 class Solution { 2 public: 3 double myPow(double x 阅读全文
posted @ 2020-10-22 16:41 拾月凄辰 阅读(130) 评论(0) 推荐(0) 编辑
摘要:思路 方法一:动态规划 从题目中可以看出,有最优子结构,可以联想到动态规划,其递归树如下: 可以看出,具有很多重叠子问题。 1 /*记忆化搜索代码*/ 2 class Solution { 3 private: 4 // 记忆化搜索,自顶向下 5 // memo[n]表示分割n获得的乘积最大值 6 阅读全文
posted @ 2020-10-22 15:29 拾月凄辰 阅读(106) 评论(0) 推荐(0) 编辑
摘要:思路 将行坐标和列坐标数位之和大于 k 的格子看作障碍物,那么这道题就是一道很传统的搜索题目,这里使用dfs进行搜索。 这道题还有一个隐藏的优化:我们在搜索的过程中搜索方向可以缩减为向右和向下,而不必再向上和向左进行搜索。 根据题意可推知,任意一个格子都可以由其上方格子向下走过来,或者由其左方的格子 阅读全文
posted @ 2020-10-22 12:17 拾月凄辰 阅读(77) 评论(0) 推荐(0) 编辑
摘要:思路 dfs +剪枝 代码实现 1 class Solution { 2 private: 3 int d[4][2] = {{0,1},{0,-1},{1,0},{-1,0}}; 4 int m, n; //n行m列 5 bool vis[210][210] = {false}; 6 7 publ 阅读全文
posted @ 2020-10-21 17:45 拾月凄辰 阅读(77) 评论(0) 推荐(0) 编辑
摘要:思路 (1) 暴力法:从数组的第一个元素开始顺序查找,直到找到numbers[i] > numbers[i+1]的情况,此时numbers[i+1]就是最小的元素。 (2) 二分法:讲解如下: 代码实现 1 class Solution { 2 public: 3 int minArray(vect 阅读全文
posted @ 2020-10-21 11:16 拾月凄辰 阅读(92) 评论(0) 推荐(0) 编辑
摘要:平时在博客园的随笔中插入图片都是直接复制粘贴,Ctrl+C之后Ctrl+V,但是gif图片直接复制粘贴的话会失去动态效果。 解决方法:点击编辑栏的上传图片进行上传gif图片,步骤如下图所示: 阅读全文
posted @ 2020-10-21 10:23 拾月凄辰 阅读(1083) 评论(0) 推荐(0) 编辑
摘要:思路 代码实现 1 class CQueue { 2 private: 3 stack<int> s1; //用于插入 4 stack<int> s2; //用于删除 5 public: 6 CQueue() { 7 8 } 9 10 void appendTail(int value) { 11 阅读全文
posted @ 2020-10-21 10:14 拾月凄辰 阅读(101) 评论(0) 推荐(0) 编辑
摘要:思路 首先回忆下,用前序遍历和中序遍历一颗二叉树: 1 / \ 2 3 / \ / \ 4 5 6 7 前序遍历的结果是:[1,2,4,5,3,6,7]中序遍历的结果是:[4,2,5,1,6,3,7]前序遍历的特点是,根节点始终出现在数组的第一位,而中序遍历中根节点出现在数组的中间位置。根据上面给出 阅读全文
posted @ 2020-10-20 15:48 拾月凄辰 阅读(89) 评论(0) 推荐(0) 编辑
摘要:思路 (1) 先正序保存下来,之后转换成逆序,用reverse函数,或者stack等等 (2) 使用递归 代码实现 递归解法: 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * Li 阅读全文
posted @ 2020-10-20 15:13 拾月凄辰 阅读(64) 评论(0) 推荐(0) 编辑
摘要:思路 代码实现 方法一: 1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int ans = 0; 5 while(n != 0) { 6 ans += (n & 1); 7 n = n >> 1; 8 } 9 10 阅读全文
posted @ 2020-10-20 12:35 拾月凄辰 阅读(75) 评论(0) 推荐(0) 编辑
摘要:思路 (1) 暴力法:遍历整个二维数组,时间复杂度为O(n*m) (2) 二分查找:对每一行进行二分查找,时间复杂度为O(n*logm),但这样没有用到"每一列都按照从上到下递增的顺序排序"这个条件 (3) 将矩阵旋转45度,讲解如下: 代码实现 1 class Solution { 2 publi 阅读全文
posted @ 2020-10-19 22:55 拾月凄辰 阅读(96) 评论(0) 推荐(0) 编辑
摘要:思路 首先创建字典树,之后对字典树进行dfs搜索。 代码实现 1 class Trie { 2 public: 3 bool isWord; 4 Trie* next[26]; 5 6 void insert(const string word) { 7 Trie* t = this; 8 for( 阅读全文
posted @ 2020-10-19 11:14 拾月凄辰 阅读(140) 评论(0) 推荐(0) 编辑
摘要:思路 方法:字典树 + 贪心 1. 将数组中的数全部存入字典树中2. 遍历树中的每一个数在字典树中异或的最大结果,最后再求最大结果里面的最大值返回 代码实现 1 class Solution { 2 class Trie { 3 public: 4 Trie* next[2] = {NULL}; 5 阅读全文
posted @ 2020-10-19 09:33 拾月凄辰 阅读(193) 评论(0) 推荐(0) 编辑
摘要:思路 字典树,边插入边更新sum 代码实现 1 class MapSum { 2 class Trie { 3 public: 4 bool isWord = false; 5 int value = 0; 6 int sum = 0; 7 Trie* next[26] = {NULL}; 8 9 阅读全文
posted @ 2020-10-18 21:56 拾月凄辰 阅读(122) 评论(0) 推荐(0) 编辑
摘要:思路 先将所有单词存入字典树。对于每个单词,在字典树中检查它的全部前缀是否存在。 代码实现 1 class Solution { 2 3 class Trie { 4 public: 5 bool isWord = false; 6 Trie* next[26] = {NULL}; 7 8 Trie 阅读全文
posted @ 2020-10-18 18:31 拾月凄辰 阅读(158) 评论(0) 推荐(0) 编辑
摘要:定义 平衡因子(Balance Factor ,简称BF ): BF(T) = hL -hR ,其中 hL 和 和 hR 为 分别为 T 的左、右子树的高度 平衡二叉树又称为AVL树,其定义如下: 空树,或者任一节点左右子树高度差的绝对值不超过1的二叉搜索树,即|BF(T)| ≤ 1。 AVL树的插 阅读全文
posted @ 2020-10-14 12:27 拾月凄辰 阅读(165) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩