LeetCode算法小技巧
文章平均质量分 65
mengmee_pku
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 切割string splite方法的实现
vector splitStr(string str, char delimiter){ vector r; string tmpstr; while (!str.empty()){ int ind = str.find_first_of(delimiter); if (ind == -1){原创 2016-04-09 23:11:06 · 4504 阅读 · 0 评论 -
C++ 字符char相关操作
比较两个char是否相等,涉及到大小写,都转换到大写比较toupper(s[i]) == toupper(s[j])我的错误,我写的s[i] == s[j] || s[i]==s[j]+32 || s[i]==s[j]-32不对,是因为'0'和'P'之间就相差32,但是他们不相等。判断字符是否是字母和数字有一个函数isalnum(s[i])其中为数字:'0'-‘9’ :48-5原创 2016-07-09 15:55:06 · 768 阅读 · 0 评论 -
二分查找之求中值
以前写二分查找都写int mid = (begin+end)/2;后来才发现,当begin和end都等于INT_MAX是会溢出,这样写不好,应改为:int mid = begin + (end-begin)/2;原创 2016-07-09 15:57:26 · 548 阅读 · 0 评论 -
vector自定义数据结构数组按照指定元素排序
一句话,好方便! sort(intervals.begin(), intervals.end(), [](Interval a, Interval b){return a.start原创 2016-07-05 18:01:17 · 978 阅读 · 0 评论 -
C++实现string的trim函数
string& trim(string &s) { if (s.empty()) { return s; } s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); retu原创 2016-06-12 22:51:45 · 1241 阅读 · 0 评论 -
vector的iterator进行erase操作后报错vector iterators incompatible
今天做leetcode遇到的一个题:int removeElement(vector& nums, int val) { int size = nums.size(); for(vector::iterator it = nums.begin(); it!=nums.end(); ) { if(*it == val)原创 2016-06-28 11:27:57 · 1031 阅读 · 1 评论 -
对map根据value进行排序
typedef pair PAIR; struct CmpByValue { bool operator()(const PAIR& lhs, const PAIR& rhs) { return lhs.second < rhs.second; } }; map mp; for(int i=0; i<ga原创 2016-04-23 16:50:42 · 456 阅读 · 0 评论 -
单调队列Monotonic Queue
leetcode中有一个找到移动窗口中的最大值,用到了Monotonic Queue,使用deque实现。保存windows中最大值或者较大值即可。原创 2016-04-23 16:05:23 · 1724 阅读 · 0 评论 -
对string的排序
string s;sort(s.begin(), s.end());原创 2016-04-22 19:47:02 · 1105 阅读 · 0 评论 -
如何快速的判断两个string中是否含有相同的字符
可以用两个for循环,时间复杂度O(n²),太慢。借助逻辑运算,用二进制表示两个字符串是否含有某个字符,然后进行并操作:string s1, s2;vector mask(2);for(char c: s1)mask[0] |= c-'a';for(char c: s2)mask[1] |= c-'a';return mask[0] & mask[1];原创 2016-04-05 18:35:01 · 1923 阅读 · 1 评论 -
模式匹配算法
转载至:http://www.cnblogs.com/mikelin/archive/2010/08/10/1796607.html模式匹配模式匹配的具体含义是在主串s中从start开始查找一个与模式串t相同的子串。如果找到则返回模式串t的第一个字符在主串中的下标;如果未找到则返回-1。 1.模式匹配的Brute-Force算法Brute-Force算法实现转载 2016-05-04 23:24:28 · 542 阅读 · 0 评论 -
C++ STL使用总结
vectorvector动态数组 .back()返回数组最后一个元素。vector之二维数组声明:vector> res(M, vector(N, 0)); 上面的一行声明了一个二维数组M行N列的二维数组,并且初始化为0;有一个交换的函数reserve(res.begin(), res.end()); //将res行交换 第一原创 2016-05-03 18:00:16 · 441 阅读 · 0 评论 -
判断有向图是否有环之拓扑排序-LeetCode 207. Course Schedule
拓扑排序:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。下图是一个拓扑排序:下图不是一个拓扑排序:如何获得一个图的拓扑排序:找到图中所有入度为0的点,放入序列,删除这些点和以这些点为出度的边,再找所有入度为0的原创 2016-05-03 15:44:13 · 4343 阅读 · 0 评论 -
C++ 去掉字符串末尾或者首的字符
string s = "\r\n\t \t这是随便写的一句话。\t\t "; size_t n = s.find_last_not_of( " \r\n\t" );if( n != string::npos ){ s.erase( n + 1 , s.size() - n );} n = s.find_f转载 2016-08-18 16:04:33 · 4370 阅读 · 1 评论
分享