- 博客(44)
- 收藏
- 关注
原创 leetcode 227. Basic Calculator II
class Solution {public: int calculate(string s) { istringstream in('+' + s + '+'); // 这一步很好,简化了问题 int ret = 0; int num; int partial = 0; char op; w
2016-09-29 22:35:43 221
原创 树状数组求区间最值
#define lowbit(i) (-i & i) // 二进制数字最低位'1'和其后'0'组成的数字templateclass BinaryIndexedTree {public: BinaryIndexedTree(const vector& arr) :LEN(arr.size()) { ori = arr; ori.insert(ori.begin(), INT_MA
2016-09-29 16:33:57 974
原创 最长不重复子串
int theLongestSubstring(const string& str) { vector visited(128, false); // 英文字符, hashTable int ret = 0, head = 0, tail = 0; for (; head < str.size();) { if (visited[str[head]]) { re
2016-09-28 14:26:00 151
原创 最长重复子串(可重叠)
void getNext(vector& next, const string& s) { // 利用KMP算法求解,时间复杂度O(n*n) next.resize(s.size() + 1); // 多加一位 next[0] = -1; int k = -1, i = 0; while ( i < s.size()) { if (k == -1 || s[i] == s[k] )
2016-09-28 09:47:16 413
原创 leetcode 221. Maximal Square
class Solution {// 最大正方形面积 public: int maximalSquare(vector>& matrix) { if (matrix.empty()) { return 0; } long len = 0; vector> dp(matrix.size(), vector(matrix[0].size(),
2016-09-27 19:59:55 190
原创 leetcode 67.Minimum Window Substring
/ 双指针, 哈希表class Solution {public: string minWindow(string s, string t) { vector cnt(128, 0); for (int e : t) { cnt[e]++; } int begin, minWindowLen = INT_MAX; int tLen = t.size(); for (in
2016-09-27 15:06:36 151
原创 trie
struct TrieNode { const static unsigned LETTERS_NUM = 26; bool hasString; struct TrieNode* next[LETTERS_NUM]; TrieNode() : hasString(false) { for (int i = 0; i < LETTERS_NUM; ++i) next[i] =
2016-09-26 21:36:32 192
原创 leetcode 212. Word Search II
trie + backtrackingclass Solution {public: vector findWords(vector>& board, vector& words) { TrieNode* root = new TrieNode(); for (auto str : words) insert(root, str); visited.resize(board
2016-09-26 21:06:39 323
原创 APUE_chapter4 文件和目录 part2
4.6 新文件和目录的所有权1、新文件的用户ID设置为进程的有效用户ID。2、新文件的组ID可以是进程的有效组ID。3、新文件的组ID也可以是它所在目录的组ID。4.7 函数access和 faccessat #include #include #include #include int main(int argc, char* argv[]){ if (arg
2016-09-22 14:48:00 264
转载 C++_Primer_chapter18 4.嵌套类
定义:在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。 虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌套类的出现只是告诉外围类
2016-09-21 19:46:10 251
原创 C++_Primer_chapter18 3.类成员的指针
#include class Example{public: int elem; Example(int e) : elem(e) {} int getElem() const{ return elem; } void setElem(int e) { elem = e; }};void fun() { }int main() { Example example
2016-09-21 16:02:16 224
原创 C++_Primer_chapter18 2. 运行时类型识别
一、dynamic_cast#include class base {public: virtual ~base() { } virtual void isWhat() { std::cout << "base" << std::endl; }};class derived: public base {public: void isWhat() { std::cou
2016-09-21 10:38:43 239
转载 extern, static, const 联系区别
extern:一、基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 第一,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的
2016-09-20 22:32:24 298
原创 C++_Primer_chapter18 7.3 链接指示:extern “C”
// c.h头文件#ifndef C_H#define C_H#ifdef __cplusplusextern "C" {#endif void print(int i);#ifdef __cplusplus}#endif#endif// c.cpp 源文件#include "c.h"#includevoid print(int i) { std::co
2016-09-20 22:03:45 257
转载 C++_Primer_chapter18 7.2 volatile
1. volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:volatile int vInt; 当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面
2016-09-20 15:54:08 270
原创 C++_Primer_chapter18 5.联合(union)
class Token {public: enum TokenType {CHAR, INT, DOUBLE}; TokenType tok; union { // 匿名联合 char _char; int _int; double _double; };};void print(Token token);int main() { Token token; toke
2016-09-20 10:47:59 304
原创 leetcode 373. Find K Pairs with Smallest Sums
思路: 1. 利用数组mark记录nums1中每个元素[i]当前与nums2中关联的位置[ji],初始关联状态为[0, 0], [1, 0], … , [i, 0], …, [nums1.size()-1,0]; 2. 利用小顶堆比较这nums1.size()个状态对应的值( nums1[i]+nums2[ji] ),找出当前的最小值。更新mark[min]的值,并将(nums1[min]
2016-09-19 21:29:10 207
原创 leetcode 402. Remove K Digits
class Solution {// 考察队数据结构stack 的使用public: string removeKdigits(string num, int k) { deque _deque; int cnt = 0; for (int i = 0; i < num.size(); ++i){ while (!
2016-09-19 20:16:06 253
原创 leetcode 400. Nth Digit
题目不难,但是debug了半天。 1. 时刻注意溢出问题2. 当sequence从1开始,还是从0开始,这是个问题。。。class Solution {public: int findNthDigit(int n) { long cnt = 9, // 时刻注意溢出问题 num = 1; while (n > cnt *
2016-09-19 19:18:50 175
原创 C++_Primer chapter9 3.顺序容器的操作
#include #include using namespace std;int main() { vector vec(20, 1); cout << vec.capacity() << endl; // print 20 cout << vec.size() << endl; // print 20 vec.reserve(100); // 预留空间 cout << v
2016-09-16 22:32:27 192
原创 APUE_chapter3 文件IO
#include #include #include #include #include // 对POSIX操作系统API的访问功能的头文件名称int main(int argc , char* argv[]){// 3.1 - 3.8 int fd = open (argv[1], O_RDWR | O_APPEND | O_CLOEXEC | O_CREAT); // o
2016-09-15 18:16:01 228
原创 C++_Primer_chapter17 3.多重继承与虚继承
class Base1 {// 二义性public: void print() { }};class Base2 {private: void print(int i) { }};class Derived : public Base1, public Base2 {};int main() { Derived* d = new Derived(); /* *
2016-09-13 19:41:58 164
原创 C++_Primer_chapter17 2.命名空间
#include namespace ns { class Cls{ /* * 知识点1: * 如果不存在可见的声明,那么,友元声明具有将该函数或类的声明放入外围作用域的效果 * 即:类Cls在命名空间ns内内部定义,则没有另外声明的友元函数fun 页相当于在命令空间内ns中声明,如下列“//”所示 */ friend void print(const Cls&
2016-09-13 17:09:11 232
原创 leetcode 84. Largest Rectangle in Histogram
class Solution {public: int largestRectangleArea(vector& heights) { heights.insert(heights.begin(), 0); // 哨兵 int ret = 0 ; stack sta; sta.push(0); for (in
2016-09-13 12:05:48 154
原创 C++_Primer chapter17 1.异常处理
class Book {public: Book(const std::string& str) try:ISDN(str) {//知识点 if (str.empty()) throw std::runtime_error("ISDN is empty"); } catch (std::runtime_error& e) { std::cout << e.what() <<
2016-09-09 22:31:16 255
原创 leetcode 168. Excel Sheet Column Title
class Solution { // 挺有意思的一题:从1到26映射,而不是0到25,这是问题的关键 public: string convertToTitle(int n) { string ret; while(n > 0){ int tmp = n % 26; ret += (tmp ? (tmp -
2016-09-09 17:14:04 155
原创 leetcode 201. Bitwise AND of Numbers Range
class Solution {public: int rangeBitwiseAnd(int m, int n) { int ret = 0x7fffffff; for (int i = 0; i < 31; ++i) if ( n - m >= 1<<i) ret -= 1<<i; return ret & n
2016-09-09 16:50:31 124
原创 leetcode 209. Minimum Size Subarray Sum
方法一:class Solution { // O(nlgn), binary searchpublic: int minSubArrayLen(int s, vector& nums) { vector sum(nums); for (int i = 1; i < nums.size(); ++i)
2016-09-09 16:09:14 210
原创 C++_Primer_chapter8 标准IO库
string file = "file.txt"; ifstream ifstr; ifstr.open(file.c_str()); if (!ifstr) cout << "fail to open file!" << endl; while (ifstr) { string line; getline(ifstr, line);// 读取一行 istringstr
2016-09-08 23:18:18 236
原创 16.6 模板特化
1. 函数特化templatevoid template_fun(const Type& t) { std::cout << "template_fun" << std::endl; std::cout << t << std::endl;}/* 函数特化, *注意:1.所有特化(包括2、3、4)必须出现在对该模板实例的调用之前, 2. 优先选择特化实例,当不匹配时,才选择模
2016-09-08 21:42:18 279
原创 leetcode 318. Maximum Product of Word Lengths
class Solution { // bitmappublic: int maxProduct(vector& words) { vector bitmap(words.size(),0); for (int i = 0; i < words.size(); ++i) for (int j = 0; j < words[i
2016-09-08 17:00:42 193
原创 220. Contains Duplicate III
class Solution { // 木桶原理public: bool containsNearbyAlmostDuplicate(vector& nums, int k, int t) { if ( k < 1 || t < 0 ) return false; const long long startPos = 0x8
2016-09-08 16:31:05 170
原创 239. Sliding Window Maximum
class Solution {public: vector maxSlidingWindow(vector& nums, int k) { deque deq; vector ret; for (int i = 0; i < nums.size(); ++i){ if (!deq.empty() && i - de
2016-09-08 14:57:10 139
原创 16.4 类模板成员
Queue的实现:1. 类定义#include // 知识点:声明Queue模板类, 第三行的友类申明才成立template class Queue; template std::ostream& operator&); template class QueueItem { // 知识点: 限制其他类型的Queue访问 QueueItem friend class Queue;
2016-09-08 10:50:47 386
原创 147. Insertion Sort List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution { // 利用链表进行插入排序public:
2016-09-07 18:37:11 199
原创 115. Distinct Subsequences
class Solution {public: int numDistinct(string s, string t) { if (s.empty() || t.empty()) return 0; vector> dp(s.size(), vector(t.size(), 0)); for (int si = 0;
2016-09-07 17:20:32 172
转载 C++_Primer 16.2 实例化
编译器对待模版时,总会用它产生特定类型的版本,这个过程成为实例化。其中函数模板在调用时或者用它对指向函数的指针初始化或者赋值时实例化,类模板在引用实际模板类型时实例化。尤其对于函数模板,编译器通常会进行实参的推断。伴随而来的问题跟函数重载类似,就是确定匹配的模板。1. 对于模板,多个类型的实参必须完全匹配,不能依靠隐式的类型转换,其中两个类型形参的类型是完全相同的,则不能调用:templa
2016-09-07 13:52:46 202
转载 C++_Primer 16.1 模板定义
函数模板一.注意事项:1.1 模板类型形参跟一般的形参类似,具有屏蔽外围变量类型的作用,在模板中,T表示的是模板类型,而不是double。typedef double T; template T foo(const T &val) { T tmp = val; return tmp; } 1.2 模板形参的名字不能在模板内部重用:
2016-09-07 12:26:05 364
转载 C++_Primer 15.8 句柄类与继承
15.7 容器与继承在C++中,这类问题有一种通用的解决办法,称为句柄类。它大体上完成两方面的工作:1.管理指针。这与智能指针的功能类似2.实现多态。利用动态绑定,是得指针既可以指向基类,也可以指向派生类。句柄类的设计需要重点考虑两个因素:1.如何管理指针2.是否屏蔽它所管理的基类和派生类的接口。这意味着,如果我们充分了解继承成层次的接口,那么就能直
2016-09-06 22:39:46 387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人