- 博客(99)
- 资源 (12)
- 收藏
- 关注
原创 程序跳转到 mainret = main(argc, argv, envp); 抛出异常Unhandled exception
在项目中遇到这种异常:程序跳转到 mainret = main(argc, argv, envp); 抛出异常,violation access。并且程序有时候正常有时候崩溃。这种错误经常需要花费很长时间去找这个错误。总结一下我遇到这种错误时的思路:1,访问异常,一般很有可能是指针访问异常。考虑指针有没有初始化,在类的构造函数里面有没有初始化成员指针。因为如果不初始化指针,指针的值是不确定
2016-10-09 16:49:14 4161 1
原创 CMake配置OpenCV 时静态链接与动态链接的选择
方法:添加OpenCV_STATIC 选项,设置为不勾选,在cmake配置的时候就会选择动态库否则,cmake 配置的时候会设置为静态库
2016-10-03 21:12:59 2511
转载 值为NULL的对象指针
值为NULL的对象指针 相信大家对NULL不会很陌生,NULL 是一个标准规定的宏定义,用来表示空指针常量,当一个指针变量被赋值为NULL时,表示它不再指向任何有效地址,无法在访问任何数据。在VS2012库文件stdio.h中有如下定义:1 #ifdef __cplusplus2 #define NULL 03 #else4 #define NULL ((v
2016-09-19 21:28:51 1150 2
原创 面试题之输入n求和为m的所有组合
背包问题。问题:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.分析:由该题可知是典型的背包问题,根据该数是否加入进行递归运算。解法:采用0-1背包的思想,使用递归方法: 当选择n时,就用剩下的n-1填满 m-n; 当不选择n是,就用剩下的n-1填满m; 注意的是,
2016-09-18 10:52:54 4538 4
原创 Leetcode-Serialize and Deserialize Binary Tree
解题思路:利用先序遍历递归遍历二叉树,对于空节点也将其作为一个节点看待,这样序列化的二叉树可以看成是一个完全二叉树。反序列化的时候,递归解析字符串,根据 根节点--左子树--右子树的规则构造二叉树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeN
2016-09-01 16:13:50 794
原创 375. Guess Number Higher or Lower II
We are playing the Guess Game. The game is as follows:I pick a number from 1 to n. You have to guess which number I picked.Every time you guess wrong, I'll tell you whether the number I pi
2016-08-30 10:09:54 931
原创 Count Numbers with Unique Digits
解题思路一:找规律,动态规划。f(n):长度为n的数字中包含的独立数位的数字个数。f(1) = 10 (0,1,2,3,4,...9)f(2)=9*9 ,因为十位只能是(1,2,...9),对于十位的每个数,个位只能取其余的9个数字。f(3)=f(2)*8=9*9*8f(10)=9*9*8*7...*1f(11)=0=f(12)=f(13)....class So
2016-08-17 11:16:12 732
原创 Next Permutation
原理简介:1,从数组尾端开始遍历,找到第一个nums[i]2,要求下一个子序列,那么我们需要在1中得到的单调子数组中找到一个比nums[i]大的数字,并且要尽量小。这样才能保证是下一个子序列。由于子数组是单调递减的,那么我们从数组尾端开始找到第一个比nums[i]大的,那么这个数字就是满足我们要求的数字。将其与nums[i]交换3,交换之后,大于i组成的子数组仍然是递减的。所以我们只需
2016-08-16 17:36:49 737
原创 283. Move Zeroes
简单题:解题思路:1,插入排序(O(n))class Solution {public: void moveZeroes(vector& nums) { int size = nums.size(); int index=0; for(int i=0;i<size;i++) { if(nums[i]!=0) nums[index++]=n
2016-08-10 16:51:17 624
原创 142. Linked List Cycle II
解法一:如果链表中环 有n个结点,指针P1在链表上向前移动n步,然后两个指针以相同的速度向前移动。 当第二个指针指向环的入口结点时,第一个指针已经围绕着环走了一圈又回到了入口结点。所以首先要得到环中结点的数目。/** * Definition for singly-linked list. * struct ListNode { * int val; *
2016-08-10 16:00:13 892
原创 377. Combination Sum IV
解题思路:该题对时间有要求,我们使用之前用过的回溯法将会超时。因为回溯法遍历所有种可能,类似于穷举,时间效率肯定不高。换个思路,我们采用动态规划的思想来看看。动态规划状态方程:dp[target]=sum(dp[target-nums[i]]) (for i=0..num.size()-1)dp[target] 代表一共有多少种可能。那么从target-nums[i] 变为
2016-08-09 15:47:10 1177
原创 282. Expression Add Operators
解题思路:深搜遍历所有可能的情况,终止条件为表达式计算的结果等于target。注意,这里要使用long 类型保存整数,否则会溢出。我在vs2013,win32模式下使用long同样不能通过"3456237490", 9191 -> []这个案例,改用long long 才可以。具体解析可以参考文末的这篇文章,讲的很好,主要要注意乘法情况下如何计算表达式的值。class
2016-08-08 19:08:53 720
原创 QT 4.7.2的一个bug:QGLWidget::grabFrameBuffer() ignores withAlpha parameter
参考https://bugreports.qt.io/browse/QTBUG-7545Bugs 报告:QGLWidget::grabFrameBuffer() ignores withAlpha parameter在我的项目中用到了老版本的QT,也是为了维护老版本,没有改成最新版的QT,结果我在对项目进行添加功能时需要使用一个截屏的功能,将在QT中显示的模型保存成图片,但
2016-08-07 17:06:40 1711
原创 二叉树中和为某一值的路径
二叉树中和为某一值的路径参与人数:4182时间限制:1秒空间限制:32768K 算法知识视频讲解题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路:二叉树的先序遍历/*struct TreeNode { int val; s
2016-07-26 10:26:27 586
转载 风格之争:Coroutine模型 vs 非阻塞/异步IO(callback)
原帖地址: http://www.kuqin.com/system-analysis/20110910/264592.html我们在设计一个服务器的软件架构的时候,通常会考虑几种架构:多进程,多线程,非阻塞/异步IO(callback) 以及Coroutine模型。多进程这种模型在linux下面的服务程序广泛采用,比如大名鼎鼎的apache。主进程负责监
2016-07-25 09:21:03 942
原创 71. Simplify Path
思路:利用vector模拟栈技巧:利用getline实现字符串切分解法1:leetcode上别人的代码string simplifyPath(string path) { string res, tmp; vector stk; stringstream ss(path); while(getline(ss,tmp,'/')) {
2016-07-22 09:10:06 412
原创 Recover Binary Search Tree
解题思路:中序遍历。BST中存在一对被交换的元素,那么可以肯定,较大节点被交换到较小的那颗子树,较小节点被交换到较大的那颗子树了。那么会存在前一个节点大于当前节点的情况,第一次找到的这种情况,那么前一个节点就是第一个我们要找的节点。后面再出现这种情况的话,那么当前结点就是我们要找的第二个节点。最后再交互二个节点的值就好了。递归/** * Definition for a binary t
2016-07-15 13:11:25 500
原创 关于Validate Binary Search Tree的总结
关于Validate Binary Search Tree的总结1,BST的定义:1) 左子树的所有值都比根节点小;2) 右子树的所有值都比根节点大;3) 左右子树也必须满足上面两个条件。需要注意的是,左子树的所有节点都要比根节点小,而非只是其左孩子比其小,右子树同样。根据BST定义来写递归程序。因为需要每个节点为根节点分别遍历其左右子树。假设一共有
2016-07-15 10:39:53 548
原创 44. Wildcard Matching
Implement wildcard pattern matching with support for '?' and '*'.'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover
2016-07-14 13:12:42 389
原创 数据流中的中位数
数据流中的中位数参与人数:1245时间限制:1秒空间限制:32768K 算法知识视频讲解题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解题思路:维护一个大堆和一个小堆,大堆表示序列前一半数,小堆表示序列后一半
2016-06-27 14:40:16 884
原创 166. Fraction to Recurring Decimal
今天华为出了这么一道面试题,当时我一紧张,没写出来。。。关键是记录循环小数,采用map结构。注意leetcode上这道题要防止溢出。将int 转换为long。一般来说int为4个字节,如果long也为4个字节的话,这样转换还是不成功的,由此我推断leetcode系统的编译器应该是64位的,这样long是8个字节,这样就避免了溢出。class Solution {public:
2016-06-24 14:29:25 419
原创 328. Odd Even Linked List
解题思路:画图分析/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: L
2016-06-21 16:53:00 362
原创 Swap Nodes in Pairs
解题思路:在纸上画图理解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: L
2016-06-21 16:10:15 362
原创 Kth Smallest Element in a BST
解题思路:中序遍历,计数统计第K个值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NUL
2016-06-19 15:25:26 433
原创 Copy List with Random Pointer
解题思路:使用map存储原来链表和新链表的节点之间的映射关系。/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * RandomLis
2016-06-18 21:24:11 467
原创 Divide Two Integers
解题思路:使用位操作class Solution {public: int divide(int dividend, int divisor) { if(divisor == 1) return dividend; if(dividend == INT_MIN && abs(divisor) == 1) retur
2016-06-18 16:02:51 386
原创 Combination Sum II
解题思路:回溯法如何避免重复。如果两个数相同,我们先用前一个数,只有当前一个数用了,这个数才能使用。例如:1 1。当我们要使用第二个1时,我们要检查他的前面一个1是否使用了,当未被使用时第二个1就不能使用。class Solution {public: void compute_sum(vector>& result,vector flag,vector
2016-06-16 22:41:25 365
原创 Combination Sum
解题思路:回溯法class Solution {public: void do_sum(vector>& result, int cur,int level, int target, vector& candidates, vector& tmp){ if (cur == target) { result.push_back(tmp); return; } if
2016-06-16 21:12:07 361
原创 Permutations II
class Solution {public: vector> result; void search(vector& nums,vector flag,vector& vec){ if(vec.size()==nums.size()) { result.push_back(vec);
2016-06-16 17:06:30 468
原创 N-Queens II
N 皇后问题。典型的回溯解法。通过维持一个全局数组来记录当前尝试的皇后所在的列和两个对角线是否已经存在其他皇后。注意主对角线标识y-x可能为负,存取时需要加上n.我们可以通过坐标(x,y)的值来表示对角线。x+y的值标识副对角线,y-x的值标识主对角线。class Solution {public: void search(int cur,int n,vector>&
2016-06-15 20:49:47 417
原创 堆排序总结
在面试中遇到要你手写堆排序,可以先询问是否可以使用STL中建堆的算法,问清楚面试官的意图之后方可动手写代码,交流最重要。heap并不属于STL组件,是一个幕后英雄,STL实现了最大堆,并用来作为priority queue的底层机制。stl中的堆默认是最大堆,要想用最小堆的话,必须要在push_heap,pop_heap,make_heap等每一个函数后面加第三个参数greater(),括
2016-06-14 20:14:00 1148
原创 最长连续递增子序列
解题思路: 遍历一遍,保存一个全局的最大长度,复杂度为O(n)#include#include using namespace std;int longest_subarray(vector data){ int current = 1; int size = data.size(); int res = 1; for (int i = 1; i < size; i++) {
2016-06-14 09:45:38 2082 1
原创 链表中倒数第K个节点
解决思路:遍历一遍,获取链表长度,然后再遍历一遍,找到第len-k个节点即为倒数第K个节点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution
2016-06-12 12:57:12 617
原创 找出字符串
有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。测试样例:["a","b","","c","","d"],6,"c"返回:3解题思路:二分法。如果mid为空字符串,
2016-06-08 13:36:59 782
原创 extern "C" 实现C++ 与 C的混合编程
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。 1,被extern "C"限定的函数或变量是extern类型的:这说明该变量的范围是全局的,不局限于本源文件,可以被其他模块引用。注意与static 进行对比,static 修饰变量或者函数使得该变量或者函数的范围局限在该源文件。 2,被ext
2016-06-05 13:53:05 535
原创 Different Ways to Add Parentheses
解题思路:分治法,使用Map 避免重复计算class Solution {public: map> mp; //使用map避免递归过程中重复计算 vector diffWaysToCompute(string input) { if(mp.find(input)!=mp.end()) return mp[input]; i
2016-05-29 12:47:38 511
原创 215. Kth Largest Element in an Array
题意,求数组中的第K大的数。思路1:利用快速排序的思路,找到一个下标为n-K的下标index,前面从下标0至n-K-1的数均小于index,该下标的值即为第K大的数字思路2:利用堆或者红黑树来解答。维护一个容量为K的容器,建立一个小根堆,遍历数组一遍,如果遍历的元素的值比堆顶元素值要大,则移除堆顶的元素,插入遍历的元素。最后得到的堆顶元素即为所求的第K大的元素。 由于multiset是基于
2016-05-28 21:20:46 548
原创 代码复用学习实例
本例子为一道面试题的归纳总结,题意为调整数组顺序是的奇数位于偶数前面。这是一类问题,我们在写代码的时候,要考虑扩展性,如果将题意改为将数组中能被3整除的数调整到不能被3整除的数后面,比如将数组中正整数调整到负数后面之类的一系列问题都可以用一个模式解决,而不用重新写很多重复代码。如下为3种代码写法,第一种为原始写法,不考虑扩展性。第二种为函数指针写法,第三种使用了函数对象的写法。/*
2016-05-15 15:35:04 1355
转载 tomcat结合nginx使用小结
转自http://cxshun.iteye.com/blog/1535188 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?可能很多人未必了解。说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。摘一段百度百科上的描述:Html代码 反向代理(Reverse
2016-05-14 00:30:40 562
原创 Nginx学习笔记一环境配置
开发环境:ubuntu 14.04 gcc在nginx官网下载最新版本源码包,解压到某个文件夹下。执行如下命令:./configure --prefix=/usr/local/nginx(指定安装部署后的根目录)make sudo make install nginx即安装成功。进入/usr/local/nginx/sbin目录执行如下命令在浏览器输入
2016-05-13 14:06:27 2192 2
OPENNI2 Kinect.dll
2014-08-25
用Myeclipse开发JSP教程 包括环境配置 部署tomcat 等等
2012-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人