自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

恰同学少年

当你的才华还撑不起你的野心时,那你就应该静下心来学习。

  • 博客(178)
  • 资源 (23)
  • 收藏
  • 关注

原创 leetcode:Bitwise AND of Numbers Range

一、 题目给出一个范围,这个范围在0--2147483647,返回在这一个范围的所有整数的与操作值。这个范围包括两个边界。例如:给出[5,7] 返回的是4二、 分析或许我们最能轻易想到的是使用暴力解法,即将范围中的数依次与操作,但是这样势必会超时。那么该如何做呢?我们做与操作其实是在将这些数二进制中相同位置不同值的去掉,留下相同的,在《编程之美》中有一个求一个数中1的个数的题目,在

2015-04-21 00:07:54 1053

原创 leetcode:Binary Tree Right Side View

一、 题目  给你一个二叉树,假设几就站在树的后边,那么此时你就只能看到最右边的节点了。例如:    1              /   \ 2      3          \     \  5     4          返回值就是[1,3,4]二、 分析  对于树的遍历,我们通常会使用DFS或BFS,这个题目其实同样是遍历,不过呢,我们只记录下来

2015-04-20 23:27:47 1012

原创 leetcode:Reverse Words in a String

一、 题目给出一个字符串,以单词为单位反转字符串。例如 i am echo返回 echo am i二、 分析仔细分析会发现,对于中间结果我们需要保存,即我们得保证以单词为单位。另外我们需要考虑到下面的情况1、中间有多个空格的处理2、没有空格的字符串3、反转后开头和结尾不能有空格4、最后的结果单词间得有空格所以,由以上我们有两种思路,一种就是以单词为单位反转,

2015-03-23 23:27:06 989

原创 leetcode:Rotate List

一、 题目给出一个链表,将右边k个节点移到前面。例如:1->2->3->4->5->NULL,k = 2时返回  4->5->1->2->3->NULL二、 分析之前我们遇到过将字符右移或左移的,当时的思路是将前一部分反转,后一部分反转,整体再反转,即可得到结果。不过这道题我们需要换一种思路,其实对于这种链表的问题,我们可以总结出,链表的反转都可以直接从某一个位置开始截断即

2015-03-23 23:16:05 1002

原创 蓄水池抽样

沉默了这么多天没有发过文章,怎么会突然看到这个算法的呢?话说这是某搜索的二面面试官给的一个题目,我知道一定会有人吐槽,PS:提前说下,这道题在《编程珠玑》上有类似的。。。曾经这本书就在我面前,但是我没有珍惜,直到今天我才后悔莫及。。。。当时觉得这本书太乏味,没耐性看,事后一狠心就买了一套,一定要看.....哭。。。。。。当时面试官是这样问的——给你一个文件,里面每一行包含一个字符串(海量的

2015-03-23 15:41:12 1272

原创 leetcode:Find Peak Element

一、 题目峰值元素的定义是比邻居元素都大的元素。给定一个数组,其中array[n] != array[n + 1],找出峰值元素并返回它的索引。但是其中可能含有多个峰值,不过返回其中的一个就可以了,可以假设num[-1] = num[n] = 负无穷大。例如,[1,2,3,1],3就是峰值,返回索引2。二、 分析方法一:暴力,其实这个方法还可以吧,如果是一般的对称情况,例如

2015-02-26 18:21:12 813

原创 leetcode:Sum Root to Leaf Numbers

一、 题目给一个二叉树,其中节点只可能是数字0-9,每一条路径组成一个数。如下:      1    /  \      2   3左边路径1->2 代表 12.右边路径1->3 代表 13.  sum = 12 + 13 = 25.二、 分析想起了一句话,树的问题可归结为递归问题,这道题也一样,每次经过一个节点会遇到三中情况:1、不包含左/右节点;

2015-02-26 17:07:34 750

原创 leetcode:Length of Last Word

一、 题目给定一个字符串s由大/小写字母和空的空间字符' ',返回字符串的最后一个单词的长度。如果最后一个单词不存在,则返回0。注:一个单词被定义为一个不带空格的字符序列。例如,给出s =“Hello World”,返回5。二、 分析没有什么复杂的算法,按照规则考虑所有情况就行,有下面的几种情况:1、“   ”2、“abc”3、“   abc”4、“

2015-02-19 09:38:52 943

原创 const关键字

const一般的意义是 ,恒定不变,修饰的对象不能改变,或是为了保护数据,提高了程序额健壮性。分类如下:常变量: const 类型说明符 变量名常引用: const 类型说明符 &引用名常对象: 类名 const 对象名常成员函数: 类名::fun(形参) const常数组: 类型说明符 const 数组名[大小]常指针: const 类型说明符* 指针名 ,类型说明符* 

2015-02-18 17:06:15 722

原创 class和struct的区别

1、最主要的区别,默认的继承访问权限。struct是public的,class是private的。2、关于使用大括号初始化class和struct如果定义了构造函数的话,都不能用大括号进行初始化如果没有定义构造函数,struct可以用大括号初始化。如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。3、关于默认访问权限class中默认的成员访问权限

2015-02-18 11:17:42 1114

原创 C++内存泄漏和内存碎片的产生及避免策略

1.内存泄漏的定义    一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该 内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。 2、内

2015-02-18 11:05:17 18741

原创 sizeof和strlen的区别

1、sizeof是一个操作符,结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小.而strlen是一个库函数,使用需要包含头文件. 2、sizeof的参数可以是数据类型或变量,而strlen函数只能以结尾为'\0'的字符串的作为参数. 3、sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是

2015-02-17 21:50:07 1958

原创 声明和定义的区别

1.变量的声明和定义有什么区别?声明部分的作用是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行说明。对于函数,声明和定义的区别是明显的,函数的声明是函数的原型,而函数的定义是函数功能的确立。对函数的声明是可以放在声明部分中的,而函数的定义显然不在函数的声明部分范围内,它是一个文件中的独立模块。在声明部分出现的变量有两种情况:一种是需要建立存储空间的(如int a;);另一种是不

2015-02-17 21:33:34 1439

原创 leetcode:Majority Element

一、 题目给出一个大小为n的数组,找出主元素,主元素是出现次数大于n/2的数。假设数组不为空,主元素一定存在。二、 分析这道题在面试中很容易见到,找出出现次数大于全体个数一半的数。思路是只需要设置一个计数器,只有它为0时才改变主元素的值,如果出现等于主元素的数则加1,否则减1。即如果有该数那么一定会找出主元素。 class Solution {public: int

2015-02-17 20:21:40 723

原创 leetcode:Combination Sum

一、 题目给一个集合和目标数,其中没有重复的数,其中的某些数的和为目标数,同一个数使用的次数没有限制。注:所有的数(包括目标数)都是正的结果必须是有序的结果中没有重复的二、 分析根据题目,第一次写的代码感觉没什么问题了,谁知道出现错误,原因是没有处理同一个数使用多次的情况,再看看自己的代码,顿时无望,果断删了重写。那么怎样处理这种情况呢?................

2015-02-17 19:21:29 797

原创 Valid Sudoku

一、 题目数独游戏,每一行,每一列,每一个小方格中含有数字1-9且不重复,不要求数字全部出现,可以用’.’代替。判断给出方格的是否符合要求。二、 分析第一次玩这个游戏,不知道规则,搜之,原来就是要遍历判断,那就查询每一行,每一列,每一个方格啦!主要的技巧是在判断方格时,可以使用一个四重for循环,优化后使用一个三重循环。class Solution {public: bo

2015-02-16 16:00:56 835

原创 leetcode:Search for a Range

一、 题目给出一个已经排好序的数组和一个数字,找出在这个数字在数组中的范围。例如:[5,7,7,8,8,10]和8返回:[3,4]二、 分析题目很基础,就是找出等值的数字的开始和结束索引,上去就遍历当第一次遇到等值时记录下左索引,最后一次遇到记录下右索引也不会超时。如下://遍历法class Solution {public: vector searchRang

2015-02-16 13:02:47 797

原创 Longest Common Prefix

一、 题目一个vector中包含若干个字符串,求出这些字符串的最大前缀。二、 分析一开始我还以为是最长公共子序列呢!后来发现是前缀...我能想到的是只有一个个比较一个个添加了,不知道还有没有更好的办法!class Solution {public: string longestCommonPrefix(vector &strs) { string res;

2015-02-10 23:34:58 737 1

原创 leetcode:Excel Sheet Column Number

一、 题目给定一个出现在Excel表格中的列标题,返回其对应的列号。例如:  A -> 1     B -> 2     C -> 3     ...     Z -> 26     AA -> 27     AB -> 28   二、 分析题目说的很清楚,其实仔细分析下很简单的,就是将一个字符串转化为整型数(atoi())的变形---以26为基数,而且

2015-02-10 22:56:45 829

转载 程序员面试的Top10大算法概念

以下是在编程面试中排名前10的算法相关的概念StringLinked ListTreeGraphSortingRecursion vs. Iteration (递归 vs. 迭代)Dynamic Programming (动态规划)Bit Manipulation (位操作)Probability   (概率问题)Combinations and Permutations  (排列组合

2015-02-10 12:48:45 659

原创 leetcode:Divide Two Integers

一、 题目不使用乘法、除法、求余运算实现除法运算,除数和被除数、结果都是用int型。如果溢出就返回MAX_INT。二、 分析看到题目后我立马想到了计算机组成原理中的一位除法和二位除法,不过想想在这里实现起来又是太麻烦了。那就先试试暴力法吧,被除数 - 除数 = ???一直减减减直到小于等于0,想想自己都觉得超时。。。如下,果然超时 class Solution {publ

2015-02-10 11:09:10 723

原创 leetcode:Pow(x, n)

一、 题目题目说的很清楚,就是实现pow()函数。二、 分析看到题目后,首先想到一个个算,心想应该会超时,果不其然。想到了二分法,这样减少了不少的运算。没有什么难度的思路。虽然思路是二分,但是又有不同的实现形式。下面使用三种》while实现: class Solution {public: double pow(double x, int n) {

2015-02-08 17:46:02 718

转载 cc150:判断一棵树是否为平衡树

判断一棵树是否平衡,需要注意的是和判断一棵树是否为平衡二叉树的区别。 平衡二叉树的定义为:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1, 并且左右两个子树都是一 棵平衡二叉树。 此时指的是这棵树任意两个叶子结点到根结点的距离之差不大于1。节点定义为:struct Node{ int key; Node *lchild, *rchild, *parent;};

2015-02-06 20:21:00 1218

原创 leetcode:Palindrome Number

一、 题目试确定一个整数是否为回文数。并不使用额外的空间。提示:负整数可能是回文数吗?(例如 -1)如果你想要将整数转换成字符串,那么你注意到不能使用额外的空间的限制。可能你尝试翻转整数,但是,如果你已经解决这个问题“逆向整型”,你要知道,颠倒整数可能会溢出的情况。那么你会如何处理这样的情况呢?要有解决这个问题的一种更通用的方法。二、 分析了解题目的意思后,其实问题

2015-02-06 14:39:02 866

原创 Count and Say

一、 题目题目说,如下的字符串:1, 11, 21, 1211, 111221, ...1读成11(一个1)11读成21(两个1)21读成(一个2一个1)......给一个整数,返回对应得语句。返回语句为一个字符串二、 分析题目的意思不是很明白,其实就是说第i+1个字符串是第i个字符串的读法,第一字符串为 “1”比如第四个字符串是1211,它的读法是 1个1

2015-02-05 20:04:35 766

原创 leetcode:First Missing Positive

一、 题目给出一个未排序的数组,找出第一个丢失的正整数,例如:给出[1,2,0] 返回3   给出[3,4,-1,1] 返回2注:算法是O(n)的时间和常量的空间二、 分析一开始,我理解错误,以为是找出第一个右边比左边小的数,后来发现我想的太简单了,题目的难点在它的要求,即时空要求。我们不能使用一般的排序或重新开辟数组,所以我们只有使用数组本身,即建立数与索引的关系:A[n

2015-02-05 13:13:08 662

原创 leetcode:Next Permutation

一、     题目     这道题给出一个数列,求大于这个数列的最小数列。例如:1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1二、     分析喜欢使用C++的童鞋或许会马上想到next_permutation()这个库函数,没错,其实这道题就是实现的它(严格说来只是初步实现),如果可以的话,如果直接输入这一行代码就可通过: void

2015-01-25 00:25:52 1077

原创 leetcode:Remove Nth Node From End of List

一、     题目给定一个单链表,删除倒数第n个节点,返回删除了的链表。例如: 已知: 1->2->3->4->5,  n = 2.处理后:1->2->3->5.      试着遍历一次完成。二、     分析看到这道题我第一感觉就是双指针,因为要删除倒数第n个数,所以两个指针的间距也就是这个n,当右边的指针到达末尾处时,那么左指针的下一个指针就是要删除的节点。其实会有下面

2015-01-14 08:32:57 741

原创 leetcode:Search Insert Position

一、     题目在一个数组中查询一个目标数,给出的是一个有序的数组、元素个数和目标数,不过特别的是这个数组可能是旋转(rotate)的。例如:数组可能是 0、1、2、4、5、6           也可能是4、5、6、0、1、2二、     分析这个题首先我们会想到二分查找,但是仔细想想好像又不是,因为不一定是正序的,还有可能旋转,因为rotate的原因,如果我们取一半的时候

2015-01-03 22:06:42 814

原创 leetcode:3Sum

一、     题目给出一个数组S包含n个整数,找出不重复的三个元素a、b、c使a+b+c=0。例如给出S = {-10 1 2 -1 -4},解果是:    (-1, 0, 1)    (-1, -1, 2)二、     分析首先我们看到这个题目会想到Brute-Force(简单的模式匹配)直接使用三重循环来匹配所有元素组合找出结果。虽然我在每一层循环都做了优化来减少一

2015-01-02 00:22:31 1032

原创 leetcode:String to Integer (atoi)

一、     题目题目目的很明显,就是将一个字符串转换成整数,也就是平时经常用到的atoi.二、     分析题目其实不难,不过需要注意下面几点:1、字符串前的空白2. 字符串所表示数值的正负号3. 结束条件,遇到非数字或者字符'\0'结束4. 考虑溢出,与int值所能表示的最大(0x7fffffff)和最小值进行比较5. 考虑异常输入情况下,用全局变量valid来

2014-12-30 23:59:51 913

原创 leetcode:Valid Palindrome

一、     题目题目给出一个字符串,求出它是否为回文字符串,其中只有字母和数字是有效字符,其他的字符可以忽略。例如:"Aman, a plan, a canal: Panama" 是回文字符串."race a car" is not a palindrome.不是回文字符串二、     分析看到这个题目我首先想到的是使用两个数组将有效字符串保存,其中一个正序一个逆序,然后做比

2014-12-26 20:55:25 842

原创 leetcode:Decode Ways

一、     题目给定一个字符串包含26个字母,字母与数字产生映射,如:‘A’  --> 1‘B’  --> 2…‘Z’ --> 26如果给一串数字,请给出编码的方式有多少?  *注意:’12’ 可以编码成”AB”,也可以编码成”L”.二、     分析可以看出题目的目的是考察动态规划,即每走一步可能有两种情况,是不是和爬台阶很像呢?对的。这道题思路有两种但

2014-12-26 19:38:58 743

原创 Edit Distance

这道题是求一个字符串编辑成为另一个字符串的最少操作数,只有三种操作包括添加,删除或者替换一个字符。

2014-12-19 21:09:41 681

原创 20141419

好多天不写题解了,这些天一直忙着和同学在搞QQ for Linux,而且苦逼的重学了Qt,不过我还是很有兴趣的,学习的过程中发现当前的关于Qt的网上或者书籍资料都过时了,Qt已经到5.4版本了,而这些资料都是4.X,学习的过程中有不少的阻碍,尤其对于初学者会一次次灰心,所以,我就想参考一些资料写一个Qt方面的教程,不至于打消很多同学的积极性。还有就是个人博客已经搭建好(wgliang.github

2014-12-19 20:24:16 581

原创 Qt5.4中遇到找不到头文件<QApplication>等。。

从新学习Qt时,重装了Qt5.4,当运行Hello World例子时,遇到了下列的情况  #include #include #include int main(int argc, char *argv[]){ QApplication a(argc,argv); QDialog w; QLabel label(&w); label.setText("He

2014-12-18 14:06:14 11856 5

原创 leetcode:Triangle

如图,在一个三角形二维数组中有一系列数,求出从顶层到底层最小和的路径。

2014-12-10 22:11:39 796

原创 leetcode:Unique Paths

题目是这样的,给定一个m*n的矩形方格,每次走一格,并且只能向右和向下走,求从左上角到右下角的路径数。扩展问题:如果在方格中写入0和1,其中1代表障碍,也就是不能通过此方格,求其路径数。

2014-12-09 23:36:56 726

原创 JavaScript学习记录

本来是14年暑假写的,当时用过后就放那了,也没来得及分享记录,纯粹是个人笔记,没什么水平可言,知识记录了一部分自己认为重要些的梗概,想要看过后就学会JS是不可能的,主要是平时使用,暑假学的JS和PHP近来也没有用过,都荒废了。。。。不用是不行的

2014-12-06 18:16:10 538

原创 JavaScript笔记八:DOM

DOM(文档对象模型):针对HTML和XML文档的一个API(应用程序编程接口)。描绘了一个层次化的节点树,允许开发人员添加、移除、修改页面的某一部分。成为表现和操作页面标记的真正的跨平台、语言中立的方式。1、节点层次   DOM可以将任何的HTML或XML文档描绘成一个多层节点构成的结构。   Node类型:用于抽象地表示文档中一个独立的部分,所有其他的类型都继承自Node;Do

2014-12-06 18:11:42 636

QT高级编程

QT高级编程精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

《QtCreator快速入门》第2版PPT课件(1-9章).

《QtCreator快速入门》第2版PPT课件(1-9章)精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

Qt Creator快速入门》代码

Qt Creator快速入门》代码精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

UNIX网络编程 卷2:进程间通信(第2版

UNIX网络编程 卷2:进程间通信(第2版)精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

UNIX环境高级编程英文第三版

UNIX环境高级编程英文第三版精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

UNIX环境高级编程

UNIX环境高级编程精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

Ubuntu官方指南

Ubuntu官方指南精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

Ubuntu12.04菜鸟使用手册合集

Ubuntu12.04菜鸟使用手册合集精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

Ubuntu Linux指南

Ubuntu Linux指南精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

Ubuntu 12.04 菜鸟完全使用教程

Ubuntu 12.04 菜鸟完全使用教程,精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

TCP_IP书籍详解

TCP/IP笔记精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

JavaScript笔记精华

JavaScript笔记精华,非常不错的资料,内容清晰,非常适合初学者和想进一步提高的

2014-10-09

数据结构与算法

数据结构与算法分析 C语言描述 是很好的数据结构学习书籍啊 算法也不错

2014-01-02

计算机网络

计算机网络5版,谢希仁,很不错的额,网络书籍,下下载

2013-12-20

linux编程从入门到精通

linux编程从入门到精通

2013-11-29

21天学通c++

21天学通c++,让你轻松学习C++,21天不是个梦,系统的学习,资料不错哟

2013-11-29

算法导论_英文版_第三版

算法导论_英文版_第三版,经典的算法著作,深入理解算法精髓。

2013-10-10

C语言参考手册第五版_中文版.

C语言参考手册第五版_中文版.pdf 超全的C知识手册,方便学习

2013-10-09

空空如也

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

TA关注的人

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