C++
文章平均质量分 53
JANESTAR
细节决定成败,付出决定收获
展开
-
CMake配置OpenCV 时静态链接与动态链接的选择
方法:添加OpenCV_STATIC 选项,设置为不勾选,在cmake配置的时候就会选择动态库否则,cmake 配置的时候会设置为静态库原创 2016-10-03 21:12:59 · 2517 阅读 · 0 评论 -
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 · 364 阅读 · 0 评论 -
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 · 435 阅读 · 0 评论 -
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 · 468 阅读 · 0 评论 -
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 · 388 阅读 · 0 评论 -
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 · 367 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 390 阅读 · 0 评论 -
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 · 469 阅读 · 0 评论 -
最长连续递增子序列
解题思路: 遍历一遍,保存一个全局的最大长度,复杂度为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 · 2085 阅读 · 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 · 624 阅读 · 0 评论 -
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 · 364 阅读 · 0 评论 -
Next Permutation
原理简介:1,从数组尾端开始遍历,找到第一个nums[i]2,要求下一个子序列,那么我们需要在1中得到的单调子数组中找到一个比nums[i]大的数字,并且要尽量小。这样才能保证是下一个子序列。由于子数组是单调递减的,那么我们从数组尾端开始找到第一个比nums[i]大的,那么这个数字就是满足我们要求的数字。将其与nums[i]交换3,交换之后,大于i组成的子数组仍然是递减的。所以我们只需原创 2016-08-16 17:36:49 · 739 阅读 · 0 评论 -
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 · 737 阅读 · 0 评论 -
程序跳转到 mainret = main(argc, argv, envp); 抛出异常Unhandled exception
在项目中遇到这种异常:程序跳转到 mainret = main(argc, argv, envp); 抛出异常,violation access。并且程序有时候正常有时候崩溃。这种错误经常需要花费很长时间去找这个错误。总结一下我遇到这种错误时的思路:1,访问异常,一般很有可能是指针访问异常。考虑指针有没有初始化,在类的构造函数里面有没有初始化成员指针。因为如果不初始化指针,指针的值是不确定原创 2016-10-09 16:49:14 · 4167 阅读 · 1 评论 -
值为NULL的对象指针
值为NULL的对象指针 相信大家对NULL不会很陌生,NULL 是一个标准规定的宏定义,用来表示空指针常量,当一个指针变量被赋值为NULL时,表示它不再指向任何有效地址,无法在访问任何数据。在VS2012库文件stdio.h中有如下定义:1 #ifdef __cplusplus2 #define NULL 03 #else4 #define NULL ((v转载 2016-09-19 21:28:51 · 1156 阅读 · 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 · 4544 阅读 · 4 评论 -
Leetcode-Serialize and Deserialize Binary Tree
解题思路:利用先序遍历递归遍历二叉树,对于空节点也将其作为一个节点看待,这样序列化的二叉树可以看成是一个完全二叉树。反序列化的时候,递归解析字符串,根据 根节点--左子树--右子树的规则构造二叉树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeN原创 2016-09-01 16:13:50 · 797 阅读 · 0 评论 -
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 阅读 · 0 评论 -
142. Linked List Cycle II
解法一:如果链表中环 有n个结点,指针P1在链表上向前移动n步,然后两个指针以相同的速度向前移动。 当第二个指针指向环的入口结点时,第一个指针已经围绕着环走了一圈又回到了入口结点。所以首先要得到环中结点的数目。/** * Definition for singly-linked list. * struct ListNode { * int val; *原创 2016-08-10 16:00:13 · 894 阅读 · 0 评论 -
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 · 1179 阅读 · 0 评论 -
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 · 935 阅读 · 0 评论 -
282. Expression Add Operators
解题思路:深搜遍历所有可能的情况,终止条件为表达式计算的结果等于target。注意,这里要使用long 类型保存整数,否则会溢出。我在vs2013,win32模式下使用long同样不能通过"3456237490", 9191 -> []这个案例,改用long long 才可以。具体解析可以参考文末的这篇文章,讲的很好,主要要注意乘法情况下如何计算表达式的值。class原创 2016-08-08 19:08:53 · 721 阅读 · 0 评论 -
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 · 1715 阅读 · 0 评论 -
数据流中的中位数
数据流中的中位数参与人数:1245时间限制:1秒空间限制:32768K 算法知识视频讲解题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解题思路:维护一个大堆和一个小堆,大堆表示序列前一半数,小堆表示序列后一半原创 2016-06-27 14:40:16 · 886 阅读 · 0 评论 -
extern "C" 实现C++ 与 C的混合编程
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。 1,被extern "C"限定的函数或变量是extern类型的:这说明该变量的范围是全局的,不局限于本源文件,可以被其他模块引用。注意与static 进行对比,static 修饰变量或者函数使得该变量或者函数的范围局限在该源文件。 2,被ext原创 2016-06-05 13:53:05 · 537 阅读 · 0 评论 -
堆排序总结
在面试中遇到要你手写堆排序,可以先询问是否可以使用STL中建堆的算法,问清楚面试官的意图之后方可动手写代码,交流最重要。heap并不属于STL组件,是一个幕后英雄,STL实现了最大堆,并用来作为priority queue的底层机制。stl中的堆默认是最大堆,要想用最小堆的话,必须要在push_heap,pop_heap,make_heap等每一个函数后面加第三个参数greater(),括原创 2016-06-14 20:14:00 · 1151 阅读 · 0 评论 -
409 - Excuses, Excuses!
Judge Ito is having a problem with people subpoenaed for jury duty giving rather lame excuses in order to avoid serving. In order to reduce the amount of time required listening to goofy excuses, Judg原创 2014-07-27 21:33:12 · 646 阅读 · 0 评论 -
UVA10815 Andy's First Dictionary
简单题原创 2014-08-02 20:22:14 · 850 阅读 · 0 评论 -
1005. 继续(3n+1)猜想 (25)
1005. 继续(3n+1)猜想 (25)时间限制400 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。原创 2014-05-31 15:02:49 · 5239 阅读 · 0 评论 -
PAT1003
1003. 我要通过!(20)时间限制400 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串原创 2014-05-28 20:04:22 · 1082 阅读 · 0 评论 -
1020. 月饼 (25)
1020. 月饼 (25)时间限制100 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及原创 2014-06-10 11:31:48 · 4402 阅读 · 0 评论 -
1024. 科学计数法 (20)
1024. 科学计数法 (20)时间限制100 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者HOU, Qiming科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[原创 2014-06-07 13:25:36 · 2734 阅读 · 0 评论 -
1022. D进制的A+B (20)
1022. D进制的A+B (20)时间限制100 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue输入两个非负10进制整数A和B(30-1),输出A+B的D (1 输入格式:输入在一行原创 2014-06-05 15:41:59 · 3815 阅读 · 0 评论 -
1014. 福尔摩斯的约会 (20)
1014. 福尔摩斯的约会 (20)时间限制50 ms内存限制32000 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkk原创 2014-06-05 14:07:39 · 6288 阅读 · 2 评论 -
pat 1079
1079. Total Sales of Supply Chain (25)时间限制250 ms内存限制32000 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA supply chain is a network of原创 2014-03-27 20:41:21 · 1050 阅读 · 0 评论 -
输入函数的细节
scanf函数细节 (2013-03-23 22:40:45)转载▼ 分类: 编程1、输入数组元素时需要注意的细节[cpp] view plaincopychar s[3]; int i; //输入数组元素有两种方法 //方法1: for (i = 0;i scanf("转载 2014-03-25 20:41:00 · 730 阅读 · 0 评论 -
关于VS中添加头文件时显示无法找到文件的问题
目录或库文件名中包含汉字或空格的话,请将其用半角双引号括住。项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项项目、属性、链接器、附加库目录:填写附加依赖库所在目录 分号间隔多项项目、属性、链接器(点前面的+展开)、输入、附加依赖项:填写附加依赖库的名字.lib 空格间隔多项原创 2014-07-12 16:52:07 · 13791 阅读 · 0 评论 -
uva 424
#include#include#include#includeusing namespace std;int main(){ string s; vectorvec; while (cin>>s&&s!="0"){ vec.push_back(s); getchar(); } vector::size_type len; len = vec.size(); str原创 2014-08-06 13:41:22 · 1006 阅读 · 0 评论 -
UVA-537 - Artificial Intelligence?
#include#include#include#includeusing namespace std;FILE* s;double data[5];char name[5];void getmark(string& a,double data[],char name[],int cnt){string::size_type i;int j = 0;原创 2014-07-31 19:30:55 · 929 阅读 · 0 评论