- 博客(69)
- 收藏
- 关注
原创 最长公共子序列&最长公共子串
#include#include#include#includeusing namespace std;/************************************************ 求最长公共子序列长度*************************************************/int LCS(string str1, string
2015-10-08 15:55:31 628
原创 最长递增子序列
#include#include#includeusing namespace std;/************************************************ 求最长递增子序列长度*************************************************///O(n^2)//int LIS(int array[], int n
2015-10-08 14:03:30 499
原创 数据结构基础笔记(三)【严蔚敏】
(一)内部排序所有的记录都能存放在内存中进行排序,称为内部排序; 对内部排序地而言,其基本操作有两种: ◆ 比较两个关键字的大小;<必不可少> ◆ 存储位置的移动:从一个位置移到另一个位置。<不一定:链式存储>【1】插入排序2-路插入排序 2-路插入排序是对折半插入排序的改进,以减少排序过程中移动记录的次数。附加n个记录的辅助空间,方法是: ① 另设一个和L->R同类型的数
2015-08-31 17:24:02 1057
原创 数据结构基础笔记(二)【严蔚敏】
动态存储管理:伙伴系统分配内存算法思想:当程序提出大小为n的内存分配请求时,首先在可利用表中查找大小与n相匹配的子表. ◆ 若存在2^(k-1)< n ≤ 2^k-1的空闲子表结点:则将子表中的任意一个结点分配之; ◆ 若不存在2^(k-1) < n ≤ 2^k-1的空闲子表结点:则从结点大小为2^k的子表中找到一个空闲结点,将其中一半分配给程序,剩余的一半插入到结点大小为2k-1的子表中。
2015-08-30 22:30:42 999
原创 数据结构基础笔记(一)【严蔚敏】
广义表广义表相关概念: ◆ a1(表中第一个元素)称为表头; ◆ 其余元素组成的子表称为表尾;(a2,a3,…,an) ◆ 广义表中所包含的元素(包括原子和子表)的个数称为表的长度。 ◆ 广义表中括号的最大层数称为表深 (度)。 根据对表头、表尾的定义,任何一个非空广义表的表头可以是原子,也可以是子表, 而表尾必定是广义表。 只要广义表非空,都是由表头和表尾组成,即一个确定的表头和
2015-08-29 14:23:12 1568
原创 KMP算法解决字符串匹配
该算法由D.E.Knuth ,J.H.Morris和 V.R.Pratt提出,用于解决字符串匹配问题。思想:设目标串(主串)为s,模式串为t ,并设i指针和j指针分别指示目标串和模式串中正待比较的字符,设i和j的初值均为0。若有s[i]=t[j],则i和j分别加1。否则,i不变,j退回到j=next[j-1]的位置,再比较s[i]和t[j],若相等,则i和j分别加1。否则,i不变,j再次退回到j=n
2015-08-27 20:47:00 1476
原创 leetcode263_264:Ugly Number & Ugly Number II
Ugly NumberWrite a program to check whether a given number is an ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly
2015-08-24 19:56:43 683
原创 leetcode268:Missing Number
方法一:时间复杂度O(n),空间复杂度O(n/32) 传统方法, 同时使用位运算压缩空间(int型32位标记32个数字)class Solution {public: int missingNumber(vector<int>& nums) { int n = nums.size() + 1; int c = (n >> 5) + 1; i
2015-08-24 10:52:36 701
原创 2016校招华为机试题目回忆1
题目一:根据指定的分隔符分隔字符串,并输出指定的段描述根据指定的分隔符分隔字符串,并输出指定的段。如果指定的段超过分隔的段数,输出:NULL举例: AAA?BBB?CCC??2 字符串为:AAA?BBB?CCC? 分隔符为:? 指定的段为:2 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB输入输出格式要求输入分隔字符串长度小于128个字符,指定的段是一个正整数。样例输入
2015-08-14 10:10:23 7111
原创 2016校招华为机试题目回忆
2016校招华为机试题目回忆标签(空格分隔): c++ 机试题目一:字符串格式化输出AAABBBBCC–>A3B4C2 将字符串按照字符+连续重复数格式化输出题目二:好友推荐有n个人,每个人都有各自的好友列表。给定一个阈值p,当A和B的共同好友数超过p则推荐A和B为好友。请实现自动推荐直到没有好友可以推荐(每次推荐默认同意,即一定成为好友),然后进行一些查询。 查询1:A的好友数有几个?如果A不
2015-08-12 16:11:23 5286 4
转载 虚函数与虚继承寻踪
虚函数与虚继承寻踪c++ 继承 虚函数这篇文章对于虚函数和虚继承有比较深入的分析,重新排版后分享给大家学习。封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更
2015-07-24 23:08:47 526
原创 leetcode085_221:Maximal Rectangle&Maximal Square
题目描述Maximal Rectangle: Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area.Maximal Square Given a 2D binary matrix filled with 0’s a
2015-06-30 11:41:32 573
原创 leetcode212:Word Search II
问题描述点此链接 Given a 2D board and a list of words from the dictionary, find all words in the board.Each word must be constructed from letters of sequentially adjacent cell, where “adjacent” cells are tho
2015-05-21 23:26:17 1029
原创 范围最小值问题(Range Minimum Query,RMQ)
问题描述给定一个n个元素的序列{A1,A2,……,An},在要求的区间Query(L,R)内找到最小值:min{AL,AL+1,……,AR}。hiho16算法描述在这里介绍最常用的Tarjan的Sparse-Table算法,它的预处理时间复杂度为O(nlogn),而查询时间只需要O(1)。令calc(i,j)表示从i开始的,长度为2j 的一段子序列的最小值,则使用循环的方式计算:calc[i][j]
2015-05-19 13:39:41 996
原创 最近公共祖先(LCA):离线&在线算法
Tarjan算法适用于离线批量处理多个查询请求。基本思想是以深度优先搜索的顺序访问这颗树,给这棵树的结点染色,一开始所有结点都是白色的,而当第一次经过某个结点的时候,将它染成灰色,而当第二次经过这个结点的时候——也就是离开这棵子树的时候,将它染成黑色。
2015-05-19 11:02:08 3509 2
原创 hiho上的一些线段树问题总结
概念:线段树(Segment Tree)是一种二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左子树表示的区间为[a,(a+b)/2],右子树表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树。叶节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。——摘自维基百科
2015-05-18 21:16:07 665
转载 Linux中的strace
前些天读到MySQL Performance上面的一篇分析MySQL bug的文章(Rare evil MySQL Bug),才知道原来Linux系统里面还有一个这么个叫strace的好工具,于是研究了一番,现在把自己的研究结果记录在这里,以备后用。什么是strace打开man strace,我们能看到对strace的最简洁的介绍就是”strace – trac
2015-05-13 21:18:38 672
转载 2014年计算机求职总结--准备篇
找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的offer。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加实习招聘等等。当然,其实主要还是研二开始准备的,也算不上多认真,反正一天一天的积累吧。这里我把我准备的内容向大家分享一下。一、推荐书籍计算机的好书挺多的,我买了也有四五十本,也花了不少钱,
2015-05-06 19:59:59 541
转载 学长们的求职血泪史(C/C++/JAVA) 努力吧骚年们
2014届校招基本慢慢收尾,现特将本人和小伙伴们的求职血泪史记录,并且推荐一些书籍供学弟学妹们参考,以壮我皇家理工之名。首先得感谢百度的师兄,他教会了我很多东西,致以很深的谢意。另外还得感谢一起求职的小伙伴们,希望我们的经历能够给学弟学妹们一个参考。以下分三个方向讲解,每个方向都是一个学长独自撰稿。(一) C语言篇C语言求职血泪史华为(实习):机试、一面、性格测试被鄙视、优招被
2015-05-06 19:54:05 1578
转载 2014找工作总结-机会往往留给有准备的人
其实我的求职过程在十一之前就已经结束了,总体讲比较顺利。参加面试的几家公司基本都拿到了offer,分别是阿里巴巴、美团网、创新工场涂鸦移动以及华为。当时也参加了其他公司的面试,比如人人,一面过后收到了二面通知,拒了。创新工场豌豆荚一面结束后等消息。十一过后的公司基本都是酱油而过。去哪儿面试拒了。腾讯一面后收到了二面的通知,也拒了。主要是因为自己已经拿到了理想公司的offer。看来人还是需要一点
2015-05-06 19:47:43 813
原创 leetcode044:Wildcard Matching
问题分析这道题目和之前的leetcode010:Regular Expression Matching 规则稍有不同,就是对于'*' 号这次代表的是匹配任意字符(包括空串),这样处理方式上完全改变,而且思路比较简单,先把通配符字符串组成部分分为两类:******* ,连续的*,预处理的时候可以合并为一个*abc?d?,字母或?组合,后面都简写为X考虑到第二类必须匹配才有可能整个字符串匹配,所以分两种情况考虑就可以了。通配符字符串只有******或者XX*X*X或*X*X或者X*X*或者*X*这
2015-05-02 22:44:19 612
原创 leetcode037:Sudoku Solver
问题分析数独解法基本靠暴力求解,在所有没有确定的位置对所有可能的解进行尝试,直接暴力解运行时间是153ms。所以在此之前先确定一下唯一解的位置,唯一解有两种类型。该位置在所在行、列、宫上都满足的情况下的候选集只有一个;该位置在所在行(列、宫)的所有未确定位置的候选集该值只出现一次。
2015-04-30 15:14:56 806
原创 leetcode042:Trapping Rain Water
问题分析这道题目解题思路可以参考leetcode011:Container With Most Water 的分析,leetcode011是求围住的最大面积,这里有所区别,统计“装水”面积,还是从两边向中间扫描,时间复杂度O(n)。 这里设置一个水平面h,表示当前围住的高度,如果后续扫面到的比h低,说明可以装水,统计;如果比h高,更新h即可。
2015-04-30 15:03:27 667
原创 leetcode028:Implement strStr()
问题描述Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Update (2014-11-02):The signature of the function had be
2015-04-17 09:41:21 578
原创 leetcode025:Reverse Nodes in k-Group
问题描述Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.If the number of nodes is not a multiple of k then left-out nodes in the end should remai
2015-04-16 13:02:53 848
原创 leetcode023:Merge k Sorted Lists
问题分析这个问题是leetcode021合并两个有序列表的增强版:合并k个有序列表。 实现原理比较相似:每次取k个列表表头结点,依次找出这些头结点最小的(排序,便于后续利用)。这次学习了如何利用s
2015-04-15 15:30:08 449
原创 leetcode012:Integer to Roman
问题描述Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.问题分析阿拉伯数字转罗马数字,只要了解了规则(请看参考链接,解释的很清晰),代码还是很简单的。范围是1到3999,所以千位单独处理,而个十百位的处理逻辑完全一致:0123、4、567
2015-04-09 22:06:26 420
原创 leetcode011:Container With Most Water
##问题分析木桶装水问题,乍一想要符合木桶效应:一只水桶能装多少水取决于它最短的那块木板。这里要从数组列表中找到两块“木板”能围住的最大面积(以较低的木板为高)。
2015-04-09 15:21:39 727
原创 leetcode009:Palindrome Number
##分析从问题描述奇少看出,代码也不会太多。关键点是不使用额外空间的情况下怎么取得对应位的值:除整取余数。如12358,取千位数的数字=>12358/1000%10.
2015-04-07 23:37:17 453
原创 leetcode008:String to Integer (atoi)
##问题分析和leetcode007的题目用到的点基本相同,只是有些情况在运行测试后发现的,如“ +5df”这样的字符串是5,要考虑到,而不是返回错误,ok,直接上代码。
2015-04-07 23:31:21 432
原创 leetcode007:Reverse Integer
##分析分析之前,leetcode提供了一些注意点,比如反转数字后造成的溢出要处理,关键问题来了,怎么处理溢出?这里用了float.h的类库,里面提供了int型的最值,所以只要将反转为long long类型然后判断是否溢出就可以啦。这里还用到了格式化输出的io函数,很是方便。
2015-04-07 23:21:52 448
原创 leetcode006:ZigZag Conversion
##分析这个想通了很简单,把它想成发扑克,正着发完直接反过来发:123212321,最后依次从1,2,3号人那里取扑克,即答案。现在的问题是拿什么数据结构存储“扑克”呢,先进先出,自然想到队列,运行时间更短的话肯定要用数据的,这里我用的vector。
2015-04-07 23:12:52 392
原创 leetcode005:Longest Palindromic Substring
最长回文子串,这个问题之前遇到过,发现理解了之后代码就很好写了,基本原理就是利用了回文串的特性:左右边子串相同。这里参考了[Manacher算法--O(n)回文子串算法](http://blog.csdn.net/sdjzping/article/details/8723438)里面介绍的算法。
2015-04-07 22:58:01 464
原创 leetcode004:Median of Two Sorted Arrays
##思路分析用到**归并排序**里面的关于两个有序数组合并的思想。 - 如果两数组总数是奇数,则中位数是最中间值,偶数则为最中间两个数均值; - 可能会出现某一数组已找完还没有到达中位数,需要继续在另一个数组上向后搜寻。
2015-04-07 21:40:28 449
原创 leetcode003:Longest Substring Without Repeating Characters
##思路描述寻找字符串中最长的非重复字符的子串。思路:ab**c**def**c**,出现重复字符则截断从重复字符后一个字符开始的子串“defc”继续统计非重复字符子串,最终达到最长非重复字符子串!
2015-04-07 21:24:32 389
原创 leetcode010:Regular Expression Matching
正则表达式匹配问题,首先要弄清楚问题里面的要求,总结下来正则式中会有以下四种类型的正则项:a型,单个字母,正常匹配,1对1;a*型,匹配0到n个重复字母(a*),视情况而定;.型,匹配任意1个字母;.*型,屌爆存在,想咋匹配自便!
2015-04-07 10:53:44 744
转载 C语言union关键字
union 关键字的用法与struct 的用法非常类似,但也有很大的不同。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:[html] view plaincopyunio
2015-03-26 20:22:26 536
原创 leetcode002:Add Two Numbers
## 思路 ##弄了半天才明白题目的意思,恩,发现就是模拟加法的过程,记得满10加1就ok啦。
2015-03-25 19:49:31 419
原创 leetcode001:Two Sum
## 思路描述 ##在数字序列中寻找两数之和等于目标数,首先想到的就是先对序列排队,然后从两边逼近目标数。如果和偏大,减小和,也就是后面的索引向前移动,反之,前面的索引向后移动,从而最终找到答案。
2015-03-25 19:42:10 420
原创 Ubuntu14.04安装wineqq国际版出现无法输入中文的解决方法
最近使用链接Ubuntu14.04安装wineqq国际版成功安装qq,但发现无法输入中文,英文正常。最后各种google+百度找到问题:我的ubuntu14.04的语言环境是English,而wine-qqintl是默认中文环境,so我们只需要该一行代码就ok:执行命令:sudo vim /usr/bin/wine-qqintl将”export LANG=zh_CN.utf8”改为”export
2015-02-10 17:20:47 3500 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人