- 博客(12)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 K-th Smallest in Lexicographical Order
依次逐渐确定前缀,每次计算当前前缀下不超过n的个数,若个数超过k,则说明第k个数在当前前缀下,反之,则说明在当前前缀加1以后的前缀;以first为前缀的数[first,first+1][first*10,(first+1)*10][first*100,(first+1)*100]class Solution {public: int findKthNumber(
2017-01-11 14:53:45 338
原创 Word Break II
dp+dfsclass Solution {private: //DFS path build function void buildPath(vector& isBreakable, string &s, int pos, vector &res, string curP, vector& wordDict, int minlen, int maxlen) { int i, len
2017-01-10 11:00:42 210
原创 MDB文件分页类型和格式
page1:0 16 “MDB format 0” 16 4 first freelist page20 4 number of free pages24 1 b+树节点类型,0x0d表示叶子节点,0x05表示内部节点25 2 剩余可用空间 emptyPage:fe5
2017-01-08 19:17:39 1016
原创 Dungeon Game
网上都是从右下角向左上角进行dp的,我想了想,从左上角开始应该也可以,只不过要加边界判断条件(是否碰到dungeon的上边界或者左边界),很麻烦,从右下角开始确实简便了很多class Solution {public: int calculateMinimumHP(vector > &dungeon) { int M = dungeon.size(); int N = dungeo
2017-01-08 09:57:11 344
原创 Arithmetic Slices II - Subsequence
越往后做题越难了啊,像这种题不看答案根本没头绪嘛,其实看个几天逐步推导应该也能有个大概思路,可惜最近真的没时间记个discuss统一认同的答案吧class Solution {public: int numberOfArithmeticSlices(vector& A) { if (A.empty()) return 0; vector> dp(A.size());//[i
2017-01-07 10:20:00 269
原创 Shortest Palindrome
暴力破解思路:补充完成之后的回文串中心必定在原字符串中----原字符串以第一个字符为起点必然存在至少一个回文串(长度可以为1)----找到原字符串中以第一个字符为起点最长的回文串----把剩余部分的翻转补充到原字符串头部。优化方法:1、求字符串s的翻转s_rev2、将两个字符串进行拼接:{s}#{s_rev}3、找出新字符串中最长公共前缀后缀长度comLen4、s_rev.su
2017-01-06 10:05:37 199
原创 Longest Valid Parentheses
有效括号子串有很多,不是连续的,所以不是一般的动态规划(一般dp的时间复杂度是O(n^2)),是断开的动态规划,回溯的时候只需要回溯一步for any longest[i], it stores the longest length of valid parentheses which is end at i.And the DP idea is :If s[i] is '('
2017-01-05 09:49:00 176
原创 MDB中cell的格式
cell存储(key, value)键值对,由于MDB目前只支持uint32_t键值和string数据,所以直接在key size中用变整型数据格式存储uint32_t类型的键值key,在data中存储字符串的ascii格式。payload header保存的是包括payload header和data type的byte数,data type是存储的数据格式,参考了sqlite的表示方法,用整数
2017-01-04 16:59:21 292
原创 Find Median from Data Stream
中位数----两个部分----两个堆贴一份discuss中优雅的代码class MedianFinder { priority_queue small, large;public: void addNum(int num) { small.push(num); large.push(-small.top());//负数模拟大根堆 small.pop(); if (s
2017-01-04 09:16:04 185
原创 Regular Expression Matching
/*** f[i][j]: if s[0..i-1] matches p[0..j-1]* if p[j - 1] != '*'* f[i][j] = f[i - 1][j - 1] && s[i - 1] == p[j - 1]* if p[j - 1] == '*', denote p[j - 2] with x* f[i][j] is true iff any
2017-01-03 14:59:44 177
原创 Minimum Window Substring
窗口子字符串的一般处理方法是用两个指针夹住子字符串,然后移动遍历,暴力搜索class Solution {public: string minWindow(string S, string T) { vector srcHash(255,0); // 记录目标字符串每个字母出现次数 for (int i = 0; i < T.length(); i++) { srcHas
2017-01-02 16:53:39 214
原创 Perfect Rectangle
http://www.cnblogs.com/grandyang/p/5825619.htmlclass Solution {public: bool isRectangleCover(vector>& rectangles) { unordered_set st; int min_x = INT_MAX, min_y = INT_MAX, max_x = INT_MIN, m
2017-01-01 09:47:42 245
Inside SQLite(SQLite技术内幕) 原版+个人翻译版
2016-10-14
MFC用capCaptureGetSetup设置视频捕获遇到问题
2014-12-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人