自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 LeetCode - Implement strStr()

class Solution {public:      void get_next(char* T,int *next)          {                int i,j;                i=0;                j=-1;                next[0]=-1;                int

2014-04-17 09:32:11 608

原创 LeetCode - Reorder List

Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2,3,4}, reorder it to 

2014-04-16 22:36:43 562

转载 LeetCode - Gray Code

哎这道题开始想麻烦了,一直在寻找规律。其实没有什么规律,用一个set保存已有序列,cur对应当前序列。 对cur从低位到高位依次判断改变位值后是否为新的序列,如是则加入set,并更新cur。如已存在则继续判定更高位。如果所有位的改变都不能产生新的序列,则结束。我只能说这是个"笨方法"了,在没有更好的方法之前。[cpp] view

2014-03-27 21:56:07 622

原创 C++ sizeof问题

关于C++中类所占的内存空间总结,见bluesky的文章:http://blog.sina.com.cn/s/blog_69c189bf0100mkeu.html阿里巴巴有一道笔试题,问sizeof(a)的大小#pragma pack(2)class A{int i;union U{char buff[13];int i;

2014-03-27 11:10:48 550

原创 LeetCode Interleaving String

Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.For example,Given:s1 = "aabcc",s2 = "dbbca",When s3 = "aadbbcbcac", return true.When s3 = "aadbbbaccc", ret

2014-03-26 13:58:35 449

原创 leetcode --n皇后

今天刷leetcode时,碰到了n皇后问题,上网发下了一个非常给力的算法。算法的核心:使用bit数组来代替以前由int或者bool数组来存储当前格子被占用或者说可用信息,从这可以看出N个皇后对应需要N位表示。巧妙之处在于:以前我们需要在一个N*N正方形的网格中挪动皇后来进行试探回溯,每走一步都要观察和记录一个格子前后左右对角线上格子的信息;采用bit位进行信息存储的话,就可

2014-03-25 00:35:08 707

原创 面试笔试总结 20140321

网易有道笔试:1.斐波那契递推方法的时间复杂度。   麻痹本来就会这一道题,结果还选错了,头一热直接选了个平方,蛋碎。2.各种排序方法里,最坏情况下空间复杂度为O(n)的:就记得快排是,不定项选择题,没敢选归并排序。3.平行线,相隔H,针长度L,与平行线有交点概率:就记得是布丰投针,然后什么都不知道了,不知道怎么算,填空题没写出来。答案:π≈(2ln)/(dm)

2014-03-21 21:17:17 961

原创 AVL树及其C++实现

折腾了一天,总算弄明白了点AVL树。其实概念上还是挺好理解的,无非是左旋右旋,但是个人认为最难理解的就是旋转后如何处理结点的bf值,即旋转后是左高还是右高还是平衡。各个教材中讲的都不详细,太难理解了,后来上网找到了一篇http://www.cnblogs.com/longdouhzt/archive/2011/07/20/2112089.html,确实读了很有帮助,觉得教材中写的弱爆了。。。。。。

2014-03-15 11:49:35 914

原创 KMP及KMP改进算法

kmp”看毛片“算法确实很难理解,上网搜了半天想了很久才大概想明白。KMP算法精华在于next数组:"部分匹配值"即next数组就是"前缀"和"后缀"的最长的共有元素的长度。以"ABCDABD"为例,首先看看next数组值的求解方法。         例如: 模式串abaabcac     next值01122312     ne

2014-03-13 10:44:49 1327

原创 数据结构 单链表 (C++)

#include using namespace std;templatestruct Node{T data;Node *next;};template class SingleList{public:SingleList(){first=new Node;first->next=NULL;length = 0;}S

2014-03-11 23:06:11 574

原创 数据结构-线性表 (C++)

#include using namespace std;const int DefaultSize=100;//默认线性表大小templateclass LinearList{public:LinearList(int MaxListSize = DefaultSize);~LinearList() {delete [] elements;

2014-03-10 18:45:02 546

转载 队列中取最大值操作问题

队列中取最大值操作问题分析:这个问题和设计一个在O(1)时间内取最大值的堆栈看似比较相似,但实现难度要比最大值的堆栈困难一些,开始想模仿最大值堆栈的思想来设计取最大值的堆栈都失败了。实际上这个问题可以拆分成两个问题: 1)设计一个在O(1)时间内取最大值的堆栈; 2)如何使用堆栈来实现一个队列;如果这两个问题解决了,O(1)时间取最大值的队列也就解决了,这体现了把一个困难的

2014-03-07 10:02:46 741

原创 计算字符串的相似度

问题许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”)。2.增加一个字符(如把“abdd”变为“aebdd”)。3.删除一个字符(如把“travelling”变为“traveling”)。比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为

2014-03-06 19:19:20 758

转载 字符串移位包含问题

问题描述:        给定两个字符串S1和S2,要求判定S2是否能够被S1做循环移动得到的字符串包含。如S1=AABCD和S2=CDAA,则S1循环移动后包含S2,返回true;S1=ABCD和S2=ACBD,则S1循环移动后不包含S2,返回false  解题思路: 1)可以发现,S1循环移动后的结果肯定包含在字符串S1+S1中,所以可以直接判断S2是否包含在字

2014-03-06 19:02:19 777

原创 C++习题整理(3)

习题4.1 假设get_size 是一个没有参数并返回int 值的函数,下列哪些定义是非法的? 为什么? unsigned buf_size = 1024 (a) int ia[buf_size]; (b) int ia[get_size()]; (c) int ia[4*7-14]; (d) char st[11] = "fundamental"  【解答】 (a)非法,

2014-03-05 22:10:54 1256

原创 C++习题整理(2)

习题3.6 解释string 类型的输入操作符和getline 函数分别如何处理空白字符。 【解答】 string 类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该 空白字符仍留在输入流中)。 getline 函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到 换行符,读取终止并丢弃换行

2014-03-05 18:37:16 786

转载 编程之美2.19——区间重合判断(线段树)

问题:1. 给定一个源区间[x,y]和N个无序的目标区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。2. 给定一个窗口区域和系统界面上的N个窗口,判断这个窗口区域是否被已有的窗口覆盖。1. 解法:先用区间的左边界值对目标区间进行排序O(nlogn),对排好序的区间进行合并O(n),对每次待查找的源区间,

2014-03-04 23:01:53 683

转载 数组循环移位

#include#includeusing namespace std;//method1/*简单的办法,可以每次将数组中的元素右移一位,循环k次。不妨设k是一个非负的整数,当k为负整数的时候,右移k位,相当于左移(-k)位。左移和右移本质上是一样的。大家开始可能会有这样潜在的假设,k但严格来说,我们不能用这样的“惯性思维”来思考问题。尤其在编程的时候,要全

2014-03-04 22:54:09 608

原创 求数组中最长递增子序列

编程之美这本书里面就有关于这道题的一些解法,求一个一位数组中的最长序列的长度。例如,在序列1,3,2中,最长递增序列是1,3.这道题,也是腾讯2012校园招聘中的一道题,其实,这道题符合无后效性的要求,我们可以任取从从数组开始时开始的任意子序列,这个子序列的状态无法直接影响将来的决策。换句话说,每个状态是过去历史的一个完整总结。我们可以定义一个存放每个子序列的最长序列值的数组L,L里面

2014-03-04 22:42:20 661

转载 只考加法的面试题

我们知道:1+2 = 3;4+5 = 9;2+3+4 = 9。等式的左边都是两个或两个以上连续的自然数相加,是不是所有的整数都可以写成这样的形式呢?问题1:  对于一个64位正整数,输出它所有可能的连续自然数(两个以上)之和的算式。问题2:  大家在测试上面程序的过程中,肯定会注意到有一些数字不能表达为一系列连续的自然数之和,例如32好像就找

2014-03-04 19:50:48 618

转载 编程之美2.20 程序理解和时间分析

题目如下:阅读以下C#代码,回答问题:using System;using System.Collections.Generic;using System.Text; namespace FindTheNumber{ class Program { static void Main(string[] args) {

2014-03-04 19:19:49 684

原创 C++ 习题整理(1)

习题2.1int、long 和short 类型之间有什么差别? 【解答】 它们的最小存储空间不同,分别为16 位、32 位和16 位。一般而言,short 类型为半个机器字(word)长,int 类型为一个机器字长,而long 类型为一个或两个机器字长(在32 位机器中,int 类型和long 类型的字长通常是相同的)。因此,它们的表示范围不同。习题2.2 unsign

2014-03-04 13:59:16 1189

转载 Unity3D编辑器插件

在阅读本教程之前,你需要对Unity的操作流程有一些基础的认识,并且最好了解内置的GUI系统如何使用。如何让编辑器运行你的代码如何让编辑器运行你的代码Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编译器参数来告知编译器何时需要触发该段代码。 [MenuItem(XXX)]声明在一个函数上方,告知编译器给Unity3D编辑器添加一个菜单项,并且当点击该菜单项的时

2014-03-02 19:13:40 1222

原创 Unity3D脚本18:可视化辅助设置类 Gizmos

Gizmos 类 Gizmos用于场景中给出一个可视化的调试或辅助设置。 所有的Gizmos绘制都必须在脚本的OnDrawGizmos或OnDrawGizmosSelected函数中完成。 OnDrawGizmos在每一帧都被调用。所有在OnDrawGizmos内部渲染的Gizmos都是可见的。 OnDrawGizmosSelected尽在脚本所附加的物体被选中时调用。 类变量 ◆ static

2014-03-02 18:57:41 1030

转载 c#[Serializable]关键字

[Serializable]关键字是指序列化的Attribute,是为了利用序列化的技术准备用于序列化的对象必须设置 [System.Serializable] 标签,该标签指示一个类可以序列化。便于在网络中传输和保存 所谓的序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化打流文件,放入内存或者IO文件 中。例如,可以序列化一个对象,然后使用 HTT

2014-03-02 18:54:36 1941

转载 二维子数组之和的最大值

1. 求二维数组(矩阵)的子矩阵之和的最大值。扩展问题:1. 收尾相连后,就只能上下确定边界,然后按照一维的解法进行求解。2. 上下也相连,就要两个方向都按照首尾相邻的情况考虑了。3、4. 三维和四维的情况,至少可以先在两个方向上遍历,在另一方向上先求和再按一维情况求解吧。2. 求三维数组(长方体)的子方体之和的最大值。

2014-03-01 22:58:19 801

转载 求数组的子数组之和的最大值

例子:[1, -2, 3, 5, -3, 2] 返回:8[0, -2, 3, 5, -1, 2] 返回:9[-9, -2, -3, -5, -3] 返回:-2一个有N个元素的整型数组arr,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组当然有很多子数组,求子数组之和的最大值。例如:[0,-2,3,5,-1,2]应返回9,[-9,-2,-3,-5,-3]应返回-2

2014-03-01 22:45:23 735

转载 子数组的最大乘积

题目:     给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。 解法:     实际上第一反应就是先将N个数相乘得到结果,然后遍历每一个数,看去掉哪个数最适合,注意正负号。效率O(N).     但是文章在最后指出不允许用除法的用意是这样的,乘法很容易溢出。意思是干脆乘法也不要用。

2014-03-01 22:28:16 840

转载 快速寻找满足条件的两个数

能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。     假如有如下的两个数组,如图所示:    5,6,1,4,7,9,8    给定Sum= 10    1,5,6,7,8,9    给定Sum= 10   分析与解法    这个题目不是很难,也很容易理解。

2014-03-01 22:09:38 655

转载 寻找最近点对(POJ 3714)

网上搜了一些讲解,下边这个感觉比较清晰:讲解:http://www.cnblogs.com/king1302217/archive/2010/07/08/1773413.html  在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。    一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。    在这里介绍一种时间复

2014-03-01 21:56:44 1507

转载 android+unity3D实现数据的存取(PlayerPrefs)

我们先来看看PlayerPrefs的API吧, 我来解释一下,SetInt是保存一个值PlayerPrefs.SetInt("Player Score",10);,GetInt是读取一个值PlayerPrefs.GetInt("Player Score"),他们就是一对啦,作为整形的存取。顾名思义,SetFloat和GetFloat为浮点型的存取,S

2014-03-01 20:24:40 1158

转载 转换到 COFF 期间失败: 文件无效或损坏

终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资

2014-02-27 12:46:30 533

转载 寻找数组中 的最大值最小值

最简单的方法就是N中的每个数分别和max,min比较,看似2N次比较,其实大于max的就不必和min比较,小于min的也不必和max比较,因此比较的次数不足2N次,程序如下:[cpp] view plaincopybool MaxMin(std::vector array, T* max, T* min) {    if (array.size()     return fal

2014-02-27 12:44:13 1257

原创 斐波那契(Fibonacci)数列

以下取自《编程之美-微软技术面试心得》斐波那契数列由如下递推关系式定义:F(0)=0 F(1)=1F(n)=F(n-1)+F(n-2) if n>1求解斐波那契数列的方法有以下几种:1.根据递推公式可以很容易想到用递归的方法求解第n+1项的值,代码如下:int Fibonacci(int n){    if(n    else 

2014-02-27 11:39:43 1276

原创 找符合条件的整数

任意给定一个正整数N,求一个最小的正整数M(M >1),使得N * M的十进制表示形式里只含有1和0。解法1:看了题目要求之后,我们的第一想法就是从小到大枚举M的取值,然后再计算N * M,最后判断它们的乘积是否只含有1和0。大体的思路可以用下面的伪代码来实现:for(M = 2; ; M++){    product = N * M;    if(

2014-02-27 10:27:23 1081

原创 最大公约数问题

问题:最大公约数问题 写一个程序,求两个正整数的最大公约数。如果两个正整数都很大,有什么简单的算法吗? 例如,给定两个数1 100 100 210 001,, 120 200 021,求出其最大公约数。 求最大公约数是一个很基本的问题。早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法———辗转相除法。辗转相除法的原理很聪明也很简单,假设用f(x,y)表示x与y的最

2014-02-26 15:07:39 985

原创 精确表达浮点数

题目:在计算机中,使用float或者double来存储小数是不能得到精确值的。如果你希望得到精确计算结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以转化为分数。比如:0.9 = 9/100.333(3)= 1/3(括号中的数字表示是循环节)当然一个小数可以用好几种分数形式来表示。如:0.333(3)= 1/3 = 3/9给定一个有限小数或者无

2014-02-26 14:53:37 627

转载 2亿个整数中求最大的100万之和

2亿个整数中求最大的100万之和题目:有一个文件中保存了2亿个整数,每个整数都以' '分隔。求最大的100万个整数之和。算法:1. 首先建立一个容量为100万(nTop)的int数组,从文件读取整数填充。2. 利用堆维护该100万条记录(确保堆顶元素为最小值)3. 从文件中读取一个整数与堆顶元素比较,如果大于堆顶元素则替换该元素,并调整堆的结构。4. 重复步骤3一直

2014-02-25 18:21:51 638

转载 寻找最大的k个数

题目描述:输入n个整数,输出其中最大的k个。举例:输入序列1、2、3、4、5、6、7、8,输出最大的4个数字为5、6、7、8。可能存在的条件限制:要求 时间 和 空间消耗最小、海量数据、待排序的数据可能是浮点数等方法一:对所有元素进行排序,之后取出前K个元素,不提倡使用思路:使用最快排序算法,选择快排 或 堆排时间复杂度:O(n*logn) + O(

2014-02-25 18:20:20 822

转载 1的个数

问题:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。例如:N= 2,写下1,2。这样只出现了1个“1”。N= 12,我们会写下1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12。这样,1的个数是5。问题是:1.   写一个函数f(N),返回1到N之间出现的“1”的个

2014-02-25 16:25:08 1398

空空如也

空空如也

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

TA关注的人

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