自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 Maximum Product of Word Lengths

题目名称 318. Maximum Product of Word Lengths分析   这个问题首先要判断两个字符串是否包含相同的字符,如果不包含,则计算两个字符串长度的乘积;如果有相同的字符,则乘积为0。返回最大的乘积。   因为字符串中的字符都是小写字母,从a-z总共26个,可以考虑用unsigned int类型的整数表示,unsigned int整数占32位内存,可以用第0位到第25

2016-09-17 14:35:19 784

原创 C++数字转换成字符串(to_string)

std::to_string C++ Strings library std::basic_string Defined in header <string>(1) std::string to_string( int value );(2) std::string to_string( long value );(3) std::string to_string( long long

2016-08-12 00:22:08 19013

原创 map与unordered_map

一、简介  随着C++ 0x标准的确立,C++的标准库中也终于有了hashtable。很久以来,STL中都只提供 <map>作为存放对应关系的容器,内部通常用红黑树实现,原因是二叉平衡树(如红黑树)的各种操作,插入、删除、查找等,都是稳定的时间复杂度,即O(logn);但是对于hash表来说,由于无法避免re-hash所带来的性能问题,即使大多数情况下hash表的性能非常好,但是re-hash所带

2016-08-08 09:02:15 1083

原创 First Missing Positive

题目名称First Missing Positive描述Given an unsorted integer array, find the first missing positive integer.For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2.Your algorithm should run in O(n) tim

2016-08-08 08:58:20 644

原创 ServiceStack.Redis

一、在Asp.net中使用Redis  StackExchange.Redis和ServiceStack.Redis是Redis的.net常用框架。因为StackExchange.Redis只支持.net4.0及以上版本,但是由于很多项目的后台框架都是.net3.x的版本,所以本文只介绍ServiceStack.Redis的安装和使用。 1.在Visual Studio的项目中添加引用2.选择使用

2016-06-29 09:53:22 1830

原创 Redis on Windows

一、redis简介  redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各

2016-06-28 15:41:49 743

原创 深入理解ECMAScript的函数参数

ECMAScript函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。一、ECMAScript传递给函数的参数与定义时的参数可以不一致   原因是ECMAScript中的参数在内部是用一个数组表示的,函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。如果这个数组中不包含任何元素,没有关系;如果包含多个元素,也

2016-06-07 09:23:27 828

原创 AngularJS 表达式

AngularJS 使用 表达式 把数据绑定到 HTML。一、AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expression }}。 AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙。 AngularJS 将在表达式书写的位置”输出”数据。 AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字

2016-05-24 23:37:24 1369

原创 Node.js版本升级

Node.js的开发非常活跃,它的最新稳定版本也频繁变化,你不时会发现,一个模块不能在你当前的Node版本上使用,此时你需要升级Node.js。幸运的是,可以用一种非常简单的方法来管理你的Node版本,即使用Node Binary管理模块“n”。检查当前Node.js版本node -v清除npm cachesudo npm cache clean -f安装n模块npm install -

2016-04-27 15:05:43 1395

原创 腾讯2016实习生面试经验(已经拿到offer)

忐忑了好几天,今天终于收到深圳总部的电话,同意录用我为2016年实习生,感觉整个天空都放晴了。给大家说说我的面试经历吧,我投的是软件开发——应用开发方向。一、校招流程投递简历->在线笔试->一面技术面->二面总监面->HR面->offer   每个环节都有可能被刷,今年HR面也刷了很多人,如果你通过了HR面还是有很小的几率拿不到offer的,因为腾讯会根据面试情况给所有通过面试的人做一个综合排名

2016-04-22 23:01:04 74708 17

原创 字节序——大端法和小端法

1.MSB和LSBMSB (Most Significant Byte):一个数字中,最重要的那位。LSB (Least Significant Byte)与MSB相反,个位数就是LSB。  比如12004,中文读作:一万两千零四。最高位的1表示一万,就称1为MSB,最有意义的位;最低位个位数为4,就称4为LSB。   在纸上演算的时候,我们习惯左边写数的MSB,右边写数的LSB。2.两种字

2016-04-15 10:19:42 942 1

原创 Unique Paths II

题目名称 63. Unique Paths II描述 Follow up for “Unique Paths”:Now consider if some obstacles are added to the grids. How many unique paths would there be?An obstacle and empty space is marked as 1 and 0 re

2016-04-12 11:45:06 409

原创 Unique Paths

题目名称 62. Unique Paths描述 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is

2016-04-12 10:45:04 436

原创 字符串位移包含的问题

题目   设定两个字符串s1和s2,要求判定s2是否能够被s1做循环位移(rotate)得到的字符串包含。例如给定s1=”AABCD”,s2=”BCDAA”,返回true;给定s1=”ABCD”,s2=”ACBD”,返回false。分析 我们可以对循环位移之后的结果进行分析: 以s1为=“ABCD”为例,先分析对s1进行循环位移之后的结果,如下所示: ABCD->BCDA->CDAB->DA

2016-04-11 23:34:36 1009

原创 C++中Lambda函数

从软件开发的角度看,以lambda概念为基础的“函数式变成”(Functional Programming)是与命令式编程(Imperative Programming)、面向对象编程(Object-oriented Programming)等并列的一种编程范型(Programming Paradigm)。从最早基于命令式编程范式的语言C,到加入了面向对象编程范式的血统C++,再到逐渐融入函数式编程

2016-04-06 00:02:21 2153

转载 修炼成C++高手必看的C++书单

C++/OPP/OOD系列: 层级一:语法/语意(C++)[Lippman2000] Essential C++ Essential C++,by Stanley B. Lippman Addison Wesley Longman 2000,276 pages Essential C++ 中文版 ,侯俊杰 译,282页 Desc: 这本书概要性的介绍了C++核心的东西,但讲得较浅显,适合

2016-04-05 12:03:37 1257

原创 C++中慎用逐位拷贝(bitwise copy)的函数

1.简单介绍C语言中的memcpy(),memset(),memcmp()函数   memcpy(),memset(),memcmp()等这些内存操作函数经常会帮我们完成一些数据复制、赋值等操作。因为C语言中,无论是内置类型,还是自定义类的结构类型(struct),其内存模型对于我们来说都是可知的,透明的。所以我们可以对该对象的底层字节序列一一进行操作,简单而有效。例如如下代码:struct ST

2016-04-03 00:25:55 2788

原创 循环左移字符串

题目   字符串的左旋转操作是把字符串前面的若干字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串“abcdefg”和数组2,该函数将返回左旋转2位得到的结果“cdefgab”。分析   通过reverse操作:一个序列abcdefg,如果向左循环移动n位,例如2位,则会编程(defg)(abc),我们把原序列分成两部分,A=(abc),B=(defg),原序列为A

2016-03-30 09:54:51 1180

原创 二叉搜索树的后序遍历序列

面试题24:二叉搜索树的后序遍历序列题目   输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。分析   例如输入{5,7,6,9,11,10,8},则返回true;输入{7,4,6,5},则返回false。   在后序遍历得到的序列中,最后一个数字是树的根结点。数组前面的数字可以分成两部分:第一部

2016-03-28 19:52:43 450

原创 静态绑定和动态绑定

对象所谓的静态类型,就是它在程序中被声明时所采用的类型;动态类型则指“目前所指对象的类型”。例如以下继承体系:class Shape{public: virtual void draw() const = 0; ...};class Rectangle:public Shape { virtual void draw() const; ...};class Ci

2016-03-27 22:21:25 541

原创 指针和对象存取数据成员有什么区别?

如果我们有两个定义:Point3d origin,*pt = &origin;  用它们来存取data member,像这样:origin.x = 0.0;pt->x = 0.0  通过origin存取,和通过pt存取,有什么重大差异么?  当Point3d是一个derived class,而其继承结构中有一个virtual base class,并且被存取的member(如本例中的x)是一个从该

2016-03-24 13:24:35 798

原创 Named Return Value Optimization

已知下列函数定义:X bar() { X xx; // process xx ... return xx;}  你可能会问bar()的返回值如何从局部对象xx中拷贝过来?实现模型1返回值的初始化(Return Value Initialization)  Stroustrup在cfront中的解决做法是一个双阶段转化:首先加上一个额外参数,参数类型是对对象的引用,用来存放

2016-03-24 13:04:09 781

原创 归并排序

首先,将R[0…n-1]看成是n个长度为1的有序表,将相邻的有序表成对归并,得到n/2个长度为2的有序表;然后,再将这些有序表成对归并,得到4/n个长度为4的有序表,如此反复进行下去,最后得到一个长度为n的有序。   由于归并是在相邻的两个有序表中进行的,因此,上述排序方法也叫二路归并排序。如果归并操作是在相邻的多个有序表中进行,则叫多路归并排序。这里只讨论二路归并排序。

2016-03-23 13:14:11 424

原创 交换排序

交换排序的基本方法是:两两比较待排序的关键字,并交换不满足次序要求的那些偶对,直到全部满足为止。这里介绍冒泡排序和快速排序两种交换排序方法。冒泡排序1.算法思想   通过无序区中相邻关键字间的比较和位置交换,使关键字最小的元素如气泡一般逐渐网上“漂浮”直至“水面”。   整个算法是从最下面的元素开始,对每两个相邻元素的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡

2016-03-22 10:36:10 781

原创 选择排序

选择排序的基本方法是:每步从带排序的元素中选出关键词最小(或最大)的元素,顺序放在已排序的元素的最后,直到全部排序完为止。这里介绍简单选择排序和堆排序。简单选择排序1.算法思想   每次从无序区中挑选出一个最小的值,将其与无序区的第一个元素交换,初始有序区为空,无序区包含所有待排序元素。2.性能分析   简单选择排序算法的效率与初始数据的顺序无关。3.完整代码#include<iostream>

2016-03-21 21:26:11 343

原创 插入排序

插入排序的思想是:每一趟将一个待排序的元素,按其关键字值的大小插入到已经排序的部分文件中的适当位置上,直到全部插入完成。这里介绍三种插入排序方法:直接插入排序、折半插入排序和希尔排序。直接插入排序1.算法思想   直接插入排序的过程是将依次将每个元素插入到一个有序的序列中去。所有元素分为有序区和无序区,每次从无序区中拿出第一个元素,从后往前(下标递减)依次与有序区每个元素比较,找到正确的位置,并将

2016-03-21 17:16:48 585

原创 关于排序算法

排序算法一直是面试和算法学习的基础和重点,一直想找个时间总结一下,今天就开始吧,对于常见的排序算法一定要做到以下几点: 1. 一提到某个排序算法,要立马说出算法的思想和排序过程; 2. 一提到某个排序算法一定要立马能在纸上写出相应的排序代码; 3. 熟记各个排序算法的时间复杂度和空间复杂度; 4. 一定要记住各种排序算法的稳定性; 5. 各种排序算法的使用场合。

2016-03-21 15:52:35 474

原创 UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是两个字节,如下如所示。各字段意义如下:1. 源端口:源端口号。在需要对方回信时选用,不需要时可用全0. 2. 目的端口:目的端口号。这在终点交付报文时必须要使用到。 **3. 长度:**UDP用户数据报的长度,其最小值是8(仅有首部)。 4. 检验和:检测UDP用户数据报在传输中是否

2016-03-18 11:13:28 8511

原创 Implement Trie (Prefix Tree)

题目名称 208. Implement Trie (Prefix Tree)描述 Implement a trie with insert, search, and startsWith methods.Note: You may assume that all inputs are consist of lowercase letters a-z.分析   字典树(Trie),又称单词查找

2016-03-17 21:18:03 506

原创 C语言中的位移运算

位移运算1.左移//C左移表达式x<<k;  对于一个n位的操作数x,x<<k操作会生成一个值:x向左移动k位,丢弃最高的k位,并在右端补k个0。位移量应该是一个0~n-1之间的值。   位移运算是从左至右可结合的,所以x<<j<<k等价于(x<<j)<<k。2.右移//C右移表达式x>>k;  一般而言,机器支持两种形式的右移:逻辑右移和算术右移。逻辑右移在左端补k个0;算术右移是在左端补k

2016-03-17 10:49:05 15594

原创 用C++实现bitmap

位图数据结构  该数据结构描述了一个有限定义域内的稠密集合,其中的每一个元素最多出现一次并且没有其他任何数据与该元素相关联。即使这些条件没有完全满足(例如,存在重复元素或额外的数据),也可以用有限定义域内的键作为一个表项更复杂的表格索引。1.什么是bitmap?   所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在

2016-03-16 22:10:10 9035

原创 Range Sum Query - Immutable

题目名称 303. Range Sum Query - Immutable描述 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.Example: Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2)

2016-03-15 22:34:34 355

原创 Mac编译C++代码

今天偶然才知道原来Xcode能够编译C++代码,这一个多月来我都是用g++ -o 来编译运行调试的啊,我的天~~

2016-03-14 23:52:12 751

原创 浅谈C++内联函数

将函数指定为内联函数(inline),通常就是将它在每个调用点上“内联地”展开。。假设我们把shorterString函数定义成内联函数,则如下调用:cout<<shorterString(s1,s2)<<endl;将在编译过程中展开成类似于下面的形式:cout<<(s1.size()<s2.size() ? s1 : s2)<<endl;从而消除了shorterString函数的运行时开销。为什么

2016-03-13 16:03:12 689

原创 类成员函数的重载、覆盖和隐藏

成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: (1)如果

2016-03-13 14:45:10 386

转载 main执行前后

转载:http://blog.csdn.net/sunmenggmail/article/details/7623492  main函数执行之前,主要就是初始化系统相关资源: 1. 设置栈指针 2. 初始化static静态和global全局变量,即data段的内容 3. 将未初始化部分的赋初值:数值型short,int,long等为0,bool 为FALSE,指针为NULL,等等,即.bss段

2016-03-11 10:28:09 384

main执行前后

main执行

2016-03-11 10:26:31 169

原创 内存分配方式

内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc

2016-03-11 10:09:45 352

原创 构造函数成员初始值列表(member initialization list)

为什么对象使用前需要初始化1.读取未初始化的值会导致不明确的行为   在某些平台上,仅仅是读取未初始化的值,就可能让你的程序终止运行。更可能的情况是读入一些“半随机”bits,污染了正在进行读取动作的那个对象,最终导致不可预知的程序行为,以及许多令人不愉快的调试过程。   永远在使用对象之前将它初始化:对于无任何成员的内置类型,你必须手工完成此事;对于内置类型以外的任何其他东西,初始化责任落在狗

2016-03-10 14:11:27 4726 1

原创 函数的值传递和引用传递

函数在每次调用时都会重新创建它的形参,并用传入的实参进行初始化。形参初始化的机理与变量初始化一样。   和其他变量一样,形参的类型决定了形参和实参交互的方式。如果形参是引用类型,它将绑定到对应的实参上;否则,将实参的值拷贝后赋给形参。   当形参是引用类型时,我们说它对应的实参被引用传递(pass by reference)或者函数被传引用调用(called by reference)。和其他引

2016-03-09 13:06:39 1272

空空如也

空空如也

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

TA关注的人

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