- 博客(198)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 图论算法进阶习题集
=============================以下是最小生成树+并查集======================================【HDU】1213 How Many Tables 基础并查集★1272 小希的迷宫 基础并查集★1325&&poj1308 Is It A Tree?
2014-03-06 19:02:08
1456
原创 memcached的压力测试工具memaslap安装
(1)首先安装libeventtar -xzvf libevent-2.0.20-stable.tar.gz./configure -prefix=/usrmakemake install(2)安装memaslapmemaslap是 libmemcached的一个组件,因此需要编译安装。首先需要下载libmemcachedtar -xzvf li
2015-08-20 13:21:00
2634
转载 Redis:BGSAVE出错原因分析
原因:1.dump.rdb文件所在的文件夹权限没有开通,导致dump.rdb文件停止更新,此时修改redis数据时会报错,原因是默认配置 stop-writes-on-bgsave-error yes当bgsave出错时数据将不能修改如下操作后可以更新数据: config set stop-writes-on-bgsave-error nodump.rdb文件也恢复更新2.当redis的内
2015-08-17 18:53:01
7753
原创 85:Maximal Rectangle【数组】【哈希】【栈】【DP】
题目链接:click~/*题意:给出包含0和1的矩阵,从图中找出最大包含1的矩形的面积(全为1)*//** *思路: 可转化成求“最大矩形面积” * 将每一列的连续的1想象成柱子,扫描每一列,记录以当前元素 * 为柱子底端时柱子的高度。 * 扫描每一行,求以当前行,为所有柱子底端时,求最大矩形面积 */class Solution {pub
2015-04-22 10:56:17
731
原创 84:Largest Rectangle in Histogram【数组】【栈】
题目链接:click~/*题意:N个非负整数,分别代表宽为1的柱子,从图中找出最大矩形的面积*//** *思路: 观察发现,只有较矮的柱子才能和其它柱子构成矩形。比较相邻的两个 * 柱子: * 1)如果后面的柱子比前面的矮,如1比2矮,那么2在以后的计算中已经 * 没什么用,这时候计算2和之前的柱子组成的最大矩形。 * 2)如果后面的柱子比前面的高
2015-04-22 09:22:15
596
原创 155:Min Stack【栈】【数据结构】
题目链接:click~/*题意:设计一个栈,支持push,top,pop以及getMin()(返回栈中最小值)*//** *思路:用一个栈维护最小值,当前要push的值小于等于最小栈的栈顶时 * 压入最小栈 */class MinStack {private: stack s; stack min_s;public: void push(i
2015-04-21 10:00:57
507
原创 49:Anagrams【哈希】【字符串】
题目链接:click~/*题意:给出很多单词,输出所有的变位词 变位词:单词中的字符排序完以后是相同的*//** *思路:1)从strs的第一个元素开始遍历,排序得到tmp * 2)查看tmp是否在map中 * 3)若不存在,将(tmp,i)存入map中 * 4)若存在,通过保存的下标将第一次出现tmp的字符串加入res中, * 再
2015-04-19 17:47:06
577
原创 3:Longest Substring Without Repeating Characters【哈希】【两指针】【字符串】
题目链接:click~/*题意:一个字符串,求不含有重复字母的最长子串的长度*//** *思路: 用v[]记录字母出现的位置。扫描字符串时,如果该字符 * 已经出现过,且出现的位置在开始位置之前,更新开始位置。 */class Solution {public: int lengthOfLongestSubstring(string s) {
2015-04-19 16:34:14
437
原创 124:Binary Tree Maximum Path Sum【树】【DFS】
题目链接:click~/*题意:给定一颗二叉树,求最大路径和。路径可以从任意结点开始,任意结点结束*//** *思路: 对于每个结点,需要比较三个值 * 1)左子结点为结尾的路径和+当前结点值 * 2)右子结点为结尾的路径和+当前结点值 * 3)当前结点值 * * 计算以当前结点为根时最大路径和: * 1)左子结点为
2015-04-19 15:51:52
579
原创 50:Pow(x, n)【数学】【二分】
题目链接:click~/*题意:求x的n次方*//** *思路: 二分: * n为偶数,x^n= (x^(n/2))*(x^(n/2)) * n为奇数,只需要再乘以x */class Solution {public: double pow(double x, int n) { if(n == 0) return 1;
2015-04-18 10:38:13
561
原创 66:Plus One【数组】【数学】
题目链接:click~/*题意:给出一个数,加上一*//** *思路: 比较特殊的就是到了最高位仍然需要进位,那么必须重新 * 申请内存空间,第一位是1,其它位都是0 */class Solution {public: vector plusOne(vector& digits) { int len = digits.size();
2015-04-18 10:02:18
483
原创 9:Palindrome Number【数学】
题目链接:click~/*题意:判断一个是否是回文数*//** *思路: 每次取首尾数字进行判断 */class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; if(x == 0) return true; int base =
2015-04-17 20:43:27
427
原创 168:Excel Sheet Column Title【数学】
题目链接:click~/*题意:10进制的数转换成26进制的*//** *思路: 本题26进制和普通10进制有所不同,10进制中10是有1和0组成的,但 * 此26进制中26由Z表示,并不是有两个其它字母组成,所有,每次计算 * 前,先将n减一,这样就好算多了。 */class Solution {public: string convert
2015-04-17 20:20:04
556
原创 93:Restore IP Addresses【回溯】【字符串】
题目链接:click~/*题意:给出一串只含数字的字符串,返回所有合法的IP*//** *思路: 对字符串进行分段处理,每段组成的数不能超过255,。将IP地址分为4段 * 每段有三种情况: * 1)只取一个数字 * 2)取两个数字,第一个数不为0 * 3)取三个数字,第一个数字不为0,且三个数字组成的数小于256 */clas
2015-04-17 19:16:59
769
原创 125:Valid Palindrome【两指针】【字符串】
题目链接:click~/*题意:判断一串字符串是否是回文串,忽略标点和空格*//** *思路:两个指针,一个从前往后遍历,另一个从后往前遍历,每次判断 * 两指针指向的值是否相同 */class Solution {public: bool isPalindrome(string s) { int len = s.size();
2015-04-17 15:10:44
490
原创 20:Valid Parentheses【栈】【字符串】
题目链接:click~/*题意:括号配对*//** *思路:遍历整个字符串 * 1)遇到的字符为左括号时,直接压入栈中 * 2)遇到的字符为右括号时,且栈不为空,判断是否和栈中括号匹配 * 匹配则删除栈顶元素 * 3)其它情况,返回false */class Solution {public: bool isValid
2015-04-17 14:49:39
679
原创 14:Longest Common Prefix【字符串】
题目链接:click~/*题意:求一串单词的公共前缀*//** *思路:比较每个单词的第i位,直到不同 */class Solution {public: string longestCommonPrefix(vector& strs) { string s; if(strs.size() == 0) return s;
2015-04-17 14:24:46
581
原创 13:Roman to Integer【数学】【字符串】
题目链接:click~/*题意:给出一串罗马数字,转化成阿拉伯数学。罗马数字值为1~3999*//** *思路:注意处理比较特殊的罗马数字,IV,IX,XL,XC,CD,CM,这些组合的值都是 * 右边较大的数字减去左边较小的数字。 * */class Solution {public: int romanToInt(string s) {
2015-04-17 13:50:48
468
原创 117:Populating Next Right Pointers in Each Node II【树】【DFS】
题目链接:click~/*题意:给定一个二叉树,将每一层的结点连接起来,要求使用O(1)的空间*//** *思路:116题的变形,116给出的是完全二叉树,本体给出的是一般的二叉树 * 基本思路相同,用next记录下一层的第一个结点。pre记录当前结点的 * 前一个结点。 */class Solution {public: void connec
2015-04-16 19:01:18
623
原创 199:Binary Tree Right Side View【树】【DFS】【BFS】
题目链接:click~/*题意:给出一个二叉树,假设你站在树的最右侧,求能看到的数*//** *思路:DFS遍历整棵树,先判断当前结点是否是最右侧的,接着遍历 * 右子树,再左子树。 */class Solution {public: void GetView(TreeNode *root, vector &v, int level) {//level表示第
2015-04-16 12:42:28
446
原创 94:Binary Tree Inorder Traversal【树】【哈希】【栈】
题目链接:click~/*题意:二叉树的中序遍历*/class Solution {public: void InOrderTraverse(TreeNode *root, vector &v) { if(root == NULL) return; InOrderTraverse(root->left, v); v.push_bac
2015-04-16 12:09:45
602
原创 173:Binary Search Tree Iterator【树】【栈】
题目链接:click~/*题意:实现BST迭代器类,next()函数返回下一个最小的结点,hasNext()判断是否有下一个最小结点 要求O(1)的时间和O(h)的的复杂度,h为树的高度*//** *思路:next()返回的其实就是中序遍历二叉树时,当前结点的相邻结点 * 考虑使用一个栈,栈顶代表下一个要返回的结点,栈里保存着从根结点 *
2015-04-16 12:01:23
564
原创 116:Populating Next Right Pointers in Each Node【树】【DFS】
题目链接:click~/*题意:f给定一个完全二叉树,将每一层的结点连接起来,要求使用O(1)的空间*//** *思路:1)按层遍历完全二叉树,记录每一层的第一个需要遍历的结点。观察发现, 下一层的第一个节点是本层第一个结点的左子结点。 * 2)把属于同一个父节点的左右子节点连接起来 * 3)连接不属于同一个父节点的临近结点,即跨子树的连接:我
2015-04-16 09:53:46
381
原创 98:Validate Binary Search Tree【树】【DFS】
题目链接:click~/*题意:判断二叉树是否是BST*//** *思路:中序遍历整棵树,记录结点的前驱结点,当前结点大于前驱结点,返回false * */class Solution {public: void checkBST(TreeNode *root, TreeNode *&pre, bool &flag) { if(root == NULL)
2015-04-15 16:08:00
429
原创 129:Sum Root to Leaf Numbers【树】【DFS】
题目链接:click~/*题意:给出一颗二叉树,从根结点到叶子结点路径上所有结点的值可以组成一个数 求这些数的和*//** *思路:DFS遍历整棵树,用num记录以当前结点为结尾的可以组成的数 * 当遍历到叶子结点时,累加到sum * */class Solution {public: void GetSum(TreeNode *root,
2015-04-15 15:30:12
472
原创 101:Symmetric Tree【树】【DFS】
题目链接:click~:解法1:队列/*题意:判断一颗二叉树是否是自己的镜像*//** *思路: 只要保证根结点下的左子树的每一层是右子树的镜像,此树是自己的镜像 * 我们利用两个队列分别记录左右子树的每一层的结点。BFS遍历左右子树时 * 为方便比较左右结点,将空结点也加入到队列中。对于结点的判断,有以下情 * 况: *
2015-04-15 12:07:31
388
原创 103:Binary Tree Zigzag Level Order Traversal【树】【BFS】【栈】
题目链接:click~/*题意:对一颗二叉树进行Z字行一层一层的遍历*/class Solution {public: void DFS(TreeNode *T, int level, vector> &path) { if(T == NULL) return; if(level == path.size()) { path.
2015-04-14 20:50:35
330
原创 99:Recover Binary Search Tree【树】【DFS】
题目链接:click~/*题意:二叉搜索树种有两个结点被调换,要求将它们找出来并恢复*//** *思路:中序遍历二叉树时,记录第一次违反有序规则的两个结点,这两个结点中的 * 第一个结点一定是被调换的结点,但是不能确定第二个结点是不是被调换的 * 另一个结点。继续寻找,如果第二次发现有违反有序规则的两个结点,那么 * 这两个结点中的第二个结点一定被调换
2015-04-14 20:27:27
412
原创 107:Binary Tree Level Order Traversal II【树】【BFS】
题目链接:click~/*题意:将二叉树中的结点一层一层的逆序输出*//** *思路:在102那道题的代码上,直接将vector反转即可 * */class Solution {public: void DFS(TreeNode *T, int level, vector> &path) { if(T == NULL) return;
2015-04-14 18:32:12
415
原创 102:Binary Tree Level Order Traversal【树】【BFS】
题目链接:click~/*题意:将二叉树中的结点一层一层的输出*//** *思路:用两个队列,一个队列保存当前层的结点,另一队列保存下一层的结点。 * 当遍历某层结点时,插入下一层的结点。 */class Solution {public: vector > levelOrder(TreeNode *root) { vector v;
2015-04-14 17:01:40
433
原创 110:Balanced Binary Tree【树】【DFS】
题目链接:click~/*题意:判断一颗平衡二叉树是否平衡*//** *思路:平衡二叉树的每个结点的左右子树的深度差不超过1 * DFS记录每个结点的左右子树的深度,判断是否平衡 */class Solution {public: bool Judge(TreeNode *T, int &dep) { if(T == NULL) {
2015-04-14 15:52:42
562
原创 113:Path Sum II【树】【DFS】
题目链接:click~/*题意:给出一颗树和一个值sum,求树中从根结点到叶子结点的所有路径 且每条路径上结点的和等于sum */ class Solution {public: void GetPathSum(TreeNode *T, int sum, vector &v, vector> &path) { if(T == NULL) re
2015-04-14 14:30:38
547
原创 112:Path Sum【树】【DFS】
题目链接:click~/*题意:给出一颗树和一个值sum,求树中是否存在从根结点到叶子结点的一条路径 使得这条路径上结点的和等于sum */class Solution {public: bool hasPathSum(TreeNode *root, int sum) { if(root == NULL) return false;
2015-04-14 14:01:25
382
原创 104:Maximum Depth of Binary Tree【树】【DFS】
题目链接:click~/*题意:求二叉树的深度*/class Solution {public: int maxDepth(TreeNode *root) { if(root == NULL) return 0; return max(maxDepth(root->left), maxDepth(root->right)) + 1; }};
2015-04-14 13:37:19
324
原创 111:Minimum Depth of Binary Tree【树】【DFS】
题目链接:click~/*题意:求二叉树的最小深度(从根结点到最近的叶子结点)*//** *思路:DFS遍历整个树,只需要叶子结点的到根的距离 * */struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL),
2015-04-14 13:31:25
359
原创 144:Binary Tree Preorder Traversal【树】【栈】
题目链接:click~/*题意:二叉树的前序遍历 */class Solution {public: void PreOrderTraverse(TreeNode *T, vector &v) { if(T == NULL) return; v.push_back(T->val); PreOrderTraverse(T->left,
2015-04-14 11:13:58
352
原创 145:Binary Tree Postorder Traversal【树】【栈】
题目链接:click~/*题意:二叉树的后序遍历*/class Solution {public: void PostOrderTraverse(TreeNode *T, vector &v) { if(T == NULL) return; PostOrderTraverse(T->left, v); PostOrderTravers
2015-04-14 11:09:20
421
原创 100:Same Tree【树】【DFS】
题目链接:click~/*题意:判断两个树是否相同*/class Solution {public: bool isSameTree(TreeNode *p, TreeNode *q) { if( !( (p && q && p->val == q->val) || (p == NULL && q == NULL) ) ) return false;
2015-04-14 10:57:28
493
原创 200:Number of Islands【DFS】【BFS】
题目链接:click~/*题意:给出一个二维0和1的矩阵,判断有多少全是1的封闭区域*//** *思路:遍历矩阵,遇到1时,以该点为起始点,向四周做深度优先遍历,遇到 * 1是,标记为已访问的状态 * */class Solution {private: int n,m;public: void DFS(vector> &grid, vector
2015-04-13 18:30:11
809
原创 130:Surrounded Regions【BFS】
题目链接:click~/*题意:给出一个二维数组,有'X'和'O',将被'X'包围的'O'替换为'X'*//** *思路:与其求被X包围的O,不如求没有被X包围的O,先对这样的O进行标记(标记成+) * 最后重新扫描一下数组,将遇到的O变成X,遇到的特殊标记变成O * */class Solution {private: int n,m;public:
2015-04-13 16:59:53
531
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人