自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 Game of Life

因为要求in-place,所以要用状态机状态转换的方法:状态0: 死细胞转为死细胞状态1: 活细胞转为活细胞状态2: 活细胞转为死细胞状态3: 死细胞转为活细胞最后我们对所有状态对2取余,那么状态0和2就变成死细胞,状态1和3就是活细胞,达成目的。我们先对原数组进行逐个扫描,对于每一个位置,扫描其周围八个位置,如果遇到状态1或2,就计数器累加1,扫完8个邻居,如果少于两个活

2016-07-31 14:45:21 200

转载 Longest Increasing Subsequence

来源:点击打开链接一个各公司都喜欢拿来做面试笔试题的经典动态规划问题,互联网上也有很多文章对该问题进行讨论,但是我觉得对该问题的最关键的地方,这些讨论似乎都解释的不很清楚,让人心中不快,所以自己想彻底的搞一搞这个问题,希望能够将这个问题的细节之处都能够说清楚。对于动态规划问题,往往存在递推解决方法,这个问题也不例外。要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要

2016-07-29 09:57:02 165

原创 Super Ugly Number

梳理一下思路:首先看一下找第n个丑数的方法:根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数。里面的每一个丑数是前面的丑数乘以2、3或者5得到的。这种思路的关键在于怎样确保数组里面的丑数是排好序的。我们假设数组中已经有若干个丑数,排好序后存在数组中。我们把现有的最大丑数记做M。现在我们来生成下一个丑数,该丑数肯定是前面

2016-07-27 20:17:32 217

原创 Search a 2D Matrix II

从右上角开始, 比较target 和 matrix[i][j]的值. 如果小于target, 则该行不可能有此数,  所以i++; 如果大于target, 则该列不可能有此数, 所以j-- 注意循环的跳出条件是&&的关系class Solution {public: bool searchMatrix(vector>& matrix, int target) {

2016-07-26 11:32:28 159

原创 Wiggle Subsequence

注意两个点:1.正负数的判断用乘法,小于0就说明两个数异号2.两个数相等,wiggle Subsequence的长度减13.读题没读清楚,[1,17,5,10,13,15,10,5,16,8]-->[1,17,10,13,10,16,8],其中5,15,5可以删掉,之前一直以为必须是连续的才行,所以我把这个数组分成了三个wiggle Subsequence,然后挑了一个最大的cla

2016-07-25 17:23:17 238

原创 Different Ways to Add Parentheses

class Solution {public: vector diffWaysToCompute(string input) { vector result; int size = input.size(); for (int i = 0; i < size; i++) { char cur = input[i]; if (cur == '+' || cur == '-

2016-07-15 19:09:10 191

原创 Unique Paths

一开始用递归,中间计算结果超过int,返回0导致0被除以。顺便复习了一下函数表达式的写法。class Solution {public: int uniquePaths(int m, int n) { std::function fac = [&fac](int a) ->int { return a <= 0 ? 1 : fac(a - 1)*a; }; return fac(n

2016-07-13 10:04:49 163

原创 Combination Sum III

思路是穷举->二分(一个数在或者不在解集中)->二叉树->深度优先搜索。深度优先搜索的迭代函数不太好构造,需要理清逻辑。class Solution {public: vector > combinationSum3(int k, int n) { vector > res; vector out; combinationSum3DFS(k, n, 1, out, res)

2016-07-09 18:53:43 178

原创 Unique Binary Search Trees

设C0 = 1,只有一个元素时可行的BST数量C1 = 1,有两个元素时可行的BST数量C2 = 2 ,C3 = C0*C2 + C1*C1 + C2*C0 , C4 =......这就是卡特兰数的定义。所以用动态规划来做。然而这种规律太难找了,我更倾向于寻找有启发性的思路。因为对于每一个节点,只有两种状态:作为根节点或不作为根节点,有二分的思想,然而很明显这道题不能用二分法做,同

2016-07-08 09:51:08 216

原创 Convert Sorted Array to Binary Search Tree

编码时有很多逻辑小细节,分享一份代码:class Solution { public: TreeNode* generateBST(int left, int right, vector& num) { if (left > right) return nullptr; else if (left

2016-07-07 11:41:44 199

原创 Generate Parentheses

结果是一个二叉树,所以用递归求。重点是递归的进入和终止条件。class Solution {public: vector vec; vector generateParenthesis(int n) { recursive("", 0, 0, n); return vec; } void recursive(string result, int l, int r, int

2016-07-05 10:41:36 180

转载 Single Number II

解法一:        int 数据共有32位,可以用32变量存储 这 N 个元素中各个二进制位上  1  出现的次数,最后 在进行 模三 操作,如果为1,那说明这一位是要找元素二进制表示中为 1 的那一位。代码如下:[cpp] view plain copy print?class Solution {  public:      

2016-07-03 09:51:15 430

MongoDB_Architecture_Guide(MongoDB架构指导)(个人翻译版)

为了学习Mongodb自己翻译的材料

2017-05-01

Inside SQLite(SQLite技术内幕) 原版+个人翻译版

个人独立翻译的《Inside SQLite》。由于时间仓促,自己也是初学者,有许多地方实在是不尽如人意,最近比较忙,之后有时间的话会修订一次。欢迎任何形式的转载、修订。希望能和大家一起学习。

2016-10-14

opengl入门

两个初学opengl时做的小程序,分别实现正方形和正方体的旋转,都详细注释了,完全原创,希望帮助到学习opengl的人

2014-12-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除