自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

没有趟不过的河

人和猪都一样懒,但是没法懒得像猪一样心安理得

  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 leetcode:Validate Binary Search Tree

最开始我犯了个错误,直接递归判断根节点的值是否在左孩子节点和右孩子节点值得中间,忽略了应该是根节点的值大于左子树所有节点的值,小于右子树所有节点的值,导致代码如下:bool isValidBST(TreeNode* root) { if(root==NULL) return true; else if(root->left&&!root->ri

2015-05-29 00:28:15 933

原创 c++学习记录:operator = 重载

《effective c++》的确是一本神书,阅读起来的感觉可以用酣畅淋漓来形容,似乎很多以前没有在意的小细节都变得豁然开朗了起来,在条款10中,scott建议我们重载操作符’=’时,返回一个*this的引用。   赋值,我们往往可以写作连锁形式:   int x,y,z;x = y = z = 10;赋值采用了右结合律,所以以上连锁赋值被解析为:x = (y = (z = 10));首先15

2015-04-21 00:37:10 1113

原创 leetcode:Roman to Integer

class Solution {public: int romanToInt(string s) { int map[128]; if(s.size()==0) return 0; map['I']=1; map['V']=5; map['X']=10; map['L'

2015-04-18 17:14:11 628

原创 leetcode:Number of Islands

其实该题为求连通子图的个数,可以借助DFS的思想:class Solution {public: bool dfs(int i,int j,vector<vector<char>> &grid) { if(i>=0&&i<grid.size()&&j>=0&&j<grid[i].size()&&grid[i][j]=='1') {

2015-04-18 13:45:09 3663

原创 弱菜的研究生生活系列一

最近生物钟严重紊乱,每天到了凌晨三点多钟才会缓缓进入睡眠。所以在看到36岁清华计算机硕士毕业生猝死的新闻,突然意识到我真的得注重自己的健康了。 说到身体状况,我记得去年13年九月份开始准备考研以来,头发开始变得有点稀少了,后来回家过年保养了段时间才慢慢打住这个不好的趋势,虽然比起以前状况是大大的不如了。 这两个星期对于实验室的项目很是懈怠,基本毫无进展,看样子明天的组会又会是痛苦难熬的了。我总结

2015-04-16 03:02:17 2109 5

原创 opengl:凸包算法

准备工作判断点在有向线段的左侧可以通过叉积判断,如下为k在有向线段ab的左侧代码描述:double multiply(Point a, Point b, Point k){ double x1 = b.x-a.x; double y1 = b.y-a.y; double x2 = k.x-a.x; double y2 = k.y-a.y; return x1

2015-04-15 00:29:33 2001

原创 opengl:绘制球体

数学基础球面参数方程球面的参数曲线可以用球坐标表示,引入参数u,v,其中v是球面点与原点的连线与z轴正向的夹角,u表示连线在xy平面的投影与x轴正向的夹角,如下图所示:则球面参数方程可以表示为:球面法向量已知球面的参数方程以后,很容易求得给定点的法向量,分别对u和v方向求偏导数,然后对两个所得向量进行叉积即可: 实现细节已知参数方程以后,需要进行离散,分别设定u和v的步长:ustep、vstep。

2015-04-13 01:47:03 45355 11

原创 leetcode:Rotate List

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *rot

2015-04-11 23:10:26 531

原创 leetcode:Factorial Trailing Zeroes

注意越界!class Solution {public: int trailingZeroes(int n) { int sum = 0; long long i =5; while(i<=n) { sum += n/i; i *= 5; } re

2015-04-11 22:16:44 574

原创 leetcode:Sort Colors

1:class Solution {public: void sortColors(int A[], int n) { int b[3] = {0,0,0}; for(int i=0;i<n;i++) { b[A[i]]++; } int i=0,j=0,k=0; for

2015-04-11 00:43:16 640

原创 leetcode:Symmetric Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solutio

2015-04-05 00:17:03 454

原创 leetcode:Subsets

class Solution {public: vector<vector<int> > subsets(vector<int> &S) { vector<vector<int>> res; vector<int> list; if(S.size()==0) { res.push_back(list);

2015-04-04 17:59:06 472

原创 -2147483648

我们写程序中可能会经常碰到overflow的情形,其中对-2147483648的处理一不小心就会出现数据overflow。 -2147483648 = -2^31,我们知道这是64位系统中int型能表示的最小值,这个时候我们要小心对其进行操作,比如执行如下程序:int a = -2147483648;int b = a*-1;int c = a-1;可以发现结果为: 这是为什么呢? 先

2015-04-04 00:50:00 23617

原创 leetcode:Divide Two Integers

class Solution {public: int divide(int dividend, int divisor) { long long div = dividend,dis = divisor; div = abs(div); dis = abs(dis); long long res = 0; w

2015-04-03 23:38:49 565

原创 leetcode:Climbing Stairs

class Solution {public: int climbStairs(int n) { vector<int> table; table.push_back(0); table.push_back(1); table.push_back(2); if(n<=2) return

2015-04-03 21:15:45 470

原创 leetcode:Populating Next Right Pointers in Each Node

/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {

2015-04-03 20:14:13 488

原创 来说说二叉树非递归遍历

二叉树的遍历早之前和同学聊天时,就提到了当时实习面试有一题就是要求非递归实现二叉树遍历,二叉树本身就是一种通过递归定义的数据结构,所以用递归的方法遍历二叉树是很容易的,而二叉树的遍历又分为前序遍历,中序遍历以及后序遍历,其中非递归的算法前序遍历和中序遍历稍简单,后序遍历稍复杂,并且都要用到栈,下面算法以如下二叉树为例: 则算法遍历的路线图如下所示:前序遍历前序遍历中,对于任一节点P可以看成根节

2015-04-02 20:54:11 608

原创 leetcode:Binary Tree Inorder Traversal

class Solution {public: vector inorderTraversal(TreeNode *root) { vector res; stack s; TreeNode * p = root; while(p!=NULL||!s.empty()) { while(

2015-04-02 16:32:22 516

原创 leetcode:Binary Tree Preorder Traversal

class Solution {public: vector preorderTraversal(TreeNode *root) { vector res; stack s; TreeNode * p = root; while(p!=NULL||!s.empty()) { while

2015-04-02 16:30:19 531

原创 leetcode:Binary Tree Postorder Traversal

class Solution {public: vector postorderTraversal(TreeNode *root) { vector res; stack>s; TreeNode *p = root; while(p!=NULL||!s.empty()) { while

2015-04-02 16:29:08 613

原创 来说说二分查找

二分查找是我们经常会遇到的算法,思路清晰,代码简洁。二分查找要求序列有序,且支持随机存取,一般情况下我们讨论的序列不存在相同元素,则二分查找可以很熟练的表示如下:int binsearch(int A[], int n, int target) { int left=0,right=n-1,res=-1; while(left<=right)

2015-04-01 16:13:59 491

原创 leetcode:Search for a Range

class Solution {public: int searchLowerBound(int A[], int n, int target) { int left=0,right=n-1,res=-1; while(left<=right) { int mid = left+((right-left)>>

2015-04-01 16:09:30 318

原创 leetcode:Permutations

class Solution { vector > ret; int N; public: void perm(vector &num, int i){ if( i == N){ ret.push_back(num); } for(int j = i; j < N;

2015-04-01 16:08:24 354

原创 leetcode:Partition List

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *pa

2015-04-01 16:07:05 386

原创 leetcode:Repeated DNA Sequences

class Solution {public: char hash[1024*1024]; vector findRepeatedDnaSequences(string s) { vector res; if(s.size()<10) return res; char convertor[26];

2015-04-01 16:06:37 406

原创 leetcode:Rotate Array

class Solution {public: void rotate(int nums[], int n, int k) { k = k%n; reverse(nums,0,n-k-1); reverse(nums,n-k,n-1); reverse(nums,0,n-1); } voi

2015-04-01 16:04:57 322

原创 leetcode:Reverse Bits

class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t m = 0; for(int i=0;i<32;i++) { m = (m<<1)+(n&0x1); n = n>>1; }

2015-04-01 16:03:00 380

原创 leetcode:Number of 1 Bits

1:class Solution {public: int hammingWeight(uint32_t n) { int count = 0; while(n) { if(n&0x1==1) { count++; }

2015-04-01 16:01:27 361

原创 UVa:1597 - Searching the Web

题目思路:首先需要构造出关键词的字典,提取关键字有一个小技巧:可以把字符串中所有非英文字母化为空格,然后用stringstream读取void updatedic(string str,int doc_id,int row_id){ string word; for(int i=0;i<str.size();i++) { if(isalpha(str[i])) str[i

2015-03-25 13:24:27 1951

原创 UVa:1596 - Bug Hunt

题目描述:输入并模拟一段程序,输出第一个bug所在的行。每行程序有两种可能:数组定义:格式为arr[size],例如a[10];赋值语句:格式为arr[index]=value,例如a[0]=3或者a[a[0]]=3赋值语句可能会出现两种bug:下标index越界,使用未初始化变量。思路:本题有两个关键点,首先在于程序中已经出现的数组以及已经赋值过的元素的存储,可以采用

2015-03-18 14:15:27 2769 1

原创 jquery获取下拉框的值

最近一个项目需要做前端,捡起好久不用的js,下拉框是我们经常用到的控件,有以下几种获得选中项的值:$("#select_id").find("option:selected").text();$("#select_id").val();$("#select_id").attr("value");其中需要主要的是第一种获得的内容可以包含空格,第二种和第三种获得的内容都不能包含空格

2015-03-13 23:08:03 4676

原创 UVa: 12100 - Printer Queue

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3252题目描述:有一些文件需要打印机打印,每个人物有不同的优先级(1-9),打印机的运作方式为:首先从打印队列里取出一个任务J,如果队列里有比J更急的任务,则直接把任务放到打印队列的尾部,否则打

2015-01-30 17:39:42 1862

原创 UVa: 1595 - Symmetry

题目链接:http://http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4470题目描述:给出平面上N(N则左边的图形有对称轴,右边没有。思路:如点集存在对称轴,则对称轴为点集x坐标和的平均。然后用set存储每个点(输入点不同),

2015-01-29 19:54:08 3954 1

原创 UVa: 10391 - Compound Words

题目描述:给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过12000个单词。输出所有的复合词按照字典序从小到大排列。思路:用set存储所有的单词,对于每个单词,遍历所有可能子单词组合,然后判断在set中是否都已经存储,若是则输出该单词。算法复杂度为O(n*lgn*|S|),其中|S|表示单词最大长度。

2015-01-28 13:18:46 930 2

原创 vs2012配置OpenGL SuperBible5环境

刚拿到opengl编程宝典第五版,打算配置好书中源码的编程环境,折腾了一天,终于弄好了,现在记录下完整的过程:为了方便,可以新建三个文件夹,用来放置所需的h文件,lib文件,dll文件。这里我把所有以下的文件提供下载,包括h,lib,dll三个文件夹,地址为:http://pan.baidu.com/s/1pJG6NAb1.freeglut下载地址:http://http://so

2015-01-27 01:27:18 2117

原创 UVa 10763 - Foreign Exchange

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1704题目描述:有n个学生想交换到其他学校学习。为了简单起见,规定每个想从A学校交换到B学校的学生必须找一个想从B交换到A的“搭档”。如果每个人都能找到搭档(一个人不能当多个人的搭档),学校就回

2015-01-25 14:18:09 544

原创 UVa 10935 - Throwing cards away I

链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1876题目描述:桌上有n(n题目比较简单,注意输出格式,当n=1时,“Discarded cards:”后没有空格。代码如下(vs2012运行通过):// 10935.cpp : 定义控

2015-01-25 12:02:11 970

原创 vignette滤镜效果

vignette滤镜效果:把图像边缘像素变暗,中心元素变得明亮。首先看看效果,原图如下:滤镜处理后的效果:实现思路:变暗——对彩色图像而言,对每个像素的三个通道即RGB分别减去一个相同的值v(保证变化后的像素值在0~255之间)。v值的确定——p*当前像素点point距离中点的距离的平方/图像四个顶点到中点的距离的平方。(p的值可控制)关键代码(项目中一部分,只用领

2015-01-24 00:55:40 1453

原创 Ducci Sequence

题目描述:对于一个n元组(a1,a2,......an),可以对于每个数求出它和下一个数的差的绝对值,得到一个新的n元组(|a1-a2|,|a2-a3|,......|an-a1|)。重复这个过程,得到的序列称为Ducci序列,例如:(8,11,2,7)->(3,9,5,1)->(6,4,4,2)->(2,0,2,4)->(2,2,2,2)->(0,0,0,0)。也有的序列最终会循环。输入n元组(

2015-01-24 00:30:35 1339 1

原创 代码对齐

题目描述:输入若干行代码,要求各列单词的左边界对齐且尽量靠左。单词之间至少要空一格。每个单词不超过80个字符,每行不超过180个字符,一共最多1000行,样例输入与输出如下:输入:  start:  integer;      //    begin herestop: integer;  // ends here s: string;c:    char;   //   te

2015-01-23 20:38:38 934

linux0.11源码注释

这是linux0.11的源码注释,希望能对各位有所帮助,能在对操作系统的理解上更进一步

2011-12-11

linux常用名利手册

提供常用的linux命令的使用方法,是一个非常全面的帮助手册。

2011-05-16

空空如也

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

TA关注的人

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