自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

思考,思考,再思考~

每天学习一个新知识,写一个小程序...

  • 博客(32)
  • 资源 (5)
  • 收藏
  • 关注

原创 每日一题(84) - 区间重合判断

题目来自编程之美题目思路(1):预处理:O(n)把给出的所有区间全部映射到一个一维数组上,该一维数组中的元素等于元素下标所在区间的起始位置查询:O(1)首先判断待查区间的终点是否在一维数组上,如果在,看终点的起点是否小于待查区间的起点,如果小于等于,则包含。如果大于,则不包含。如果不在,则已知区间不包含待查区间。举例:已知区间:1 3;2 5;7 9

2013-08-29 10:35:31 1364

原创 每日一题(83) - 计算字符串的相似度

题目来自编程之美题目思路:其实就是求两个字符串的编辑距离,直接给出DP的思路代码#include #include #include using namespace std;/*f[i][j]:表示字符串A[1~i]转换成B[1~j]的最小编辑距离f[i][j] = min{f[i - 1][j - 1] + value,f[i][j - 1] + 1,f[i

2013-08-28 16:59:31 1066

原创 每日一题(82) - 电话号码对应的英语单词

题目来自编程之美题目:电话的号码盘一般可以用于输入字母。如用2可以输入A、B、C,用3可以输入D、E、F等。给出一个号码,它可以对应许多个字母组合。如号码5869872,它对应的字母组合可以是JTMWTPA、JTMWTB······1)给出一个电话号码,从 设计程序,尽可能从这些字母组合中,找到一个有意义的单词来表述一个电话号码。如单词"computer"来描述号码26678837

2013-08-27 15:44:31 1866

原创 每日一题(81) - 子数组之和的最大值(二维) - 最大子矩阵和

题目:给出一个 m*n 的二维矩阵(元素可为正可为负),求该二维矩阵的一个子矩阵,且此子矩阵中所有元素的和最大,并输出该矩阵的和。举例(1)给出4*4的二维矩阵: 0 -2 -7  0  9  2 -6  2 -4  1 -4  1 -1  8  0 -2 和最大的子矩阵为: 9 2 -4 1 -1 8 此子矩阵元素的和为15。举例(2)

2013-08-27 13:01:59 2523

原创 每日一题(80) - 最大子数组和(原数组为首尾相连)

题目来自编程之美题目举例:(1)数组A[6] = {1,-2,3,4,-3,5};    输出最大和为:11(2)数组A[6] = {1,-2,3,4,-6,-2};   输出最大和为:7(3)数组A[6] = {1,-10,1,2,3,2};    输出最大和为:9(4)数组A[6] = {1,2,3,4,5,6};      输出最大和为:21(5)数组A[

2013-08-25 21:27:40 1258

原创 计算机网络面试题

可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。

2013-08-25 17:01:54 14184 4

原创 每日一题(79) - 求数组中最长递增子序列

题目来自编程之美题目思路(1) 动态规划(复杂度为n^2)方程:F[i]:表示以nArr[i]为结尾的最长递增子序列的最大长度。F[i] = Max(F[j]) + 1 && a[i] > a[j] && i > j;方程的直观含义:检查nArr[i]能接在哪一个数的后面。如果要求LIS序列,需要令开辟一个数组。复杂度:O(n^2)代码:只求LIS的长度

2013-08-21 10:40:59 964

原创 每日一题(78) - 精确表达浮点数

题目来自编程之美题目:举例:0.3333(3333) = 1/30.285714(285714) = 2/70.3(000) = 3/100.25 = 1/4思路:代码:注意:假设输入的参数形式为0.XXXX的形式,且均为正数。#include #include #include #include using namespace

2013-08-20 22:58:15 1141

原创 每日一题(77) - 子数组的最大乘积

题目来自编程之美题目举例-4,-2,-3,-1 中任意三个数的最大乘积为-6思路(1)暴力法具体来说,把N个组合全找出来,计算乘积。时间复杂度为O(n^2).思路(2)空间换时间,使用数据预先保存部分乘积的结果具体来说:使用数组nArrLeftPdt[i]:保存下标[0,i]之间数的乘积使用数组nArrRightPdt[i]:保存下标[i,nLen -

2013-08-20 16:21:32 954

原创 每日一题(76) - 最短摘要的生成

题目来自编程之美题目举例思路举例代码#include #include #include #include #include #include using namespace std;void Print(vector& vArrStrContent,int nStart,int nEnd){ cout<<"区间: "<<nStart<<" - "<<n

2013-08-18 22:49:56 1014

原创 每日一题(75) - 最大公约数问题

题目来自编程之美题目思路(1)辗转相除法思想:参数要求:无要求,x >= y 或 y >= x均可gcd(x,y) = gcd(y ,x % y);原理:假设 x = ky + b,其中 k = x/y,b = x%y.则,b = x - ky假设 整数t同时整除x和y,则式子两边同时除以t,得b / t = (x - ky) / t = 整

2013-08-18 16:31:03 1435

原创 每日一题(74) - 求二叉树中节点的最大距离

题目来自编程之美题目举例(图是网上偷的,在此谢过)思路后序遍历 + 根据结点的深度求解以该节点为根的距离该节点的距离 等于 其两个子树的最大深度之和代码struct BTNode{ int m_nData; BTNode* m_pLeft; BTNode* m_pRight;};int MaxDistance(BTNode* pRoot,i

2013-08-17 22:36:22 912

原创 每日一题(73) - 字符串移位包含的问题

题目来自剑指offer题目思路代码#include #include using namespace std;bool IsInclude(char strA[],char strB[]){ assert(strA && strB); if (strA == strB && strA == "") { return true; } int nLenStr

2013-08-17 20:04:40 1109

原创 每日一题(72) - 分层遍历二叉树

题目来自剑指offer题目(1)举例   思路:很容易得到层序遍历的序列,这里重点在于怎么确定每层结点的结束位置。思路(1)在处理本层结点时,使用一个游标指向本层最后一个结点的后一个位置。struct BTNode{ int m_nData; BTNode* m_pLeft; BTNode* m_pRight;};void LevelOrder(BTN

2013-08-16 16:12:53 873

转载 智力题研究(二)

本文转载自董的博客,在此感谢!本文链接地址: http://dongxicheng.org/brain/intelligence-problems-1/作者:Dong,作者介绍:http://dongxicheng.org/about/--------------------------------------------续上一篇文章:“智力题研究(一)”。

2013-08-14 16:06:21 1301

转载 智力题研究(一)

本文转载自董的博客,在此感谢!本文链接地址: http://dongxicheng.org/brain/intelligence-problems-1/作者:Dong,作者介绍:http://dongxicheng.org/about/-----------------------不管是找工作还是考公务员,常见的一种面试或者笔试题目就是智力题,这种题目有的比较简单,有的难度

2013-08-14 15:54:09 1440

原创 每日一题(71) - 树中两个结点的最低公共祖先

void CreateMap(BTNode* pRoot,map<int,map<int,int>>& mapEle){ if (!pRoot) { return; } CreateMap(pRoot->m_pLeft,mapEle); CreateMap(pRoot->m_pRight,mapEle); map<int,int> mapTmp; mapTmp.insert(pair<int,int>(pRoot->m_nValue,pRoot->m_nValue)); //把

2013-08-12 20:49:30 4525

原创 求解区间最值的ST算法

作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例举例:给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1。方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1))。虽然还可以使用线段树、树状链表等求解区间最值,但是ST算法要比它们更快,而且适用于在线查询。(1)离线预处理:运用DP思想,用于求解区间最值,并保

2013-08-12 18:24:56 7978 4

原创 每日一题(70) - n个筛子的点数

题目来自剑指Offer题目:思路:根据题意,需要做两步:(1)求解点数和s出现的次数,其中s的区间为[n,6n](2)求解点数和s出现的概率。其中难点是求解每一个点数s出现的次数,这里给出两种方法。思路(1):类似元素的排列,应该算是深度搜索。(1)n个骰子相当于一个长度为n的一维数组(2)骰子数字为1-6,则数组的每一个位置都可以为1-6。代码:

2013-08-11 10:19:41 1680

转载 Topic-Sensitive PageRank(主题敏感的PageRank )

转载于真实的归宿,在此感谢。前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所以搜索引擎一般会选

2013-08-10 21:49:21 8592 2

转载 PageRank算法

转载于真实的归宿,在此感谢。1. PageRank算法概述         PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。        是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和学术界十分关注的计算模型。目前很多重

2013-08-10 20:46:15 2030

原创 每日一题(69) - 二叉搜索树与双向链表

题目来自剑指offer题目:举例:思路:类似数据结构中的中序加线索。具体来说,使用中序遍历的思路,并使用一个变量pLast保存在中序遍历中当前元素pCur的前一个元素。之后,每处理一个结点,都设置本结点的前驱和上一个结点后继。处理完后,中序遍历的最后一个元素的后继没有被赋值,需要单独赋值为空,其他元素的前驱和后继都已正确赋值完毕。核心代码void Con

2013-08-10 16:20:55 844

原创 每日一题(68) - 复杂链表的复制

题目和思路来自剑指Offer题目举例思路:难点是怎么确定兄弟指针的指向。思路(1)使用Map确定兄弟指针的指向如上例,输入数据为 A,B,C,D、E建立的map:A - A'B - B'...E - E'初始化兄弟结点的值:以结点A为例,要寻找结点A'的兄弟结点D'遍历已有链表的结点A时,找到其兄弟结点D,之后根据Map,获得D'

2013-08-09 22:47:46 2437

原创 每日一题(67) - 操作系统面试题

1、磁盘分区格式FAT(FAT16)、FAT32、NTFS、ext2的比较(1)FAT16:FAT16是目前应用最为广泛和获得操作系统支持最多的一种磁盘分区格式缺点:1)FAT16最大支持2G的分区。2)磁盘利用效率低。解释:1)为啥FAT16最大支持2G的分区?原因:FAT16是指系统使用的文件分配表是16位的,其对应2^16个簇,由于一个簇最大容量为32KB,则

2013-08-08 22:53:27 4507

原创 每日一题(66) - 字符串的排列

题目来自剑指offer题目(1):集合的全排列,只处理数字全不同的情况思路:全排列属于线性递归,递归一次确定一个位置的数据,直到所有位置全被处理为止。注意:(1)在确定一个位置时,由于该位置的数据有多种,因此需要使用for循环。(2)程序里面没有使用临时数组,而是通过数组元素交换的方式获得该位置的数据的。(3)在确定一个位置时,待交换数据的起点是从该位置开始,一直到

2013-08-08 20:47:59 960

原创 每日一题(65) - 数值的整数次方

题目来自剑指offer题目:思路:思路很简单,主要都是细节的活,考虑周全就ok(1)底数base可能为正负和0,当底数为0时,需要单独考虑。(2)指数exponent也可能为正负和0,当指数为负数时,需要单独考虑。具体思路(1):直接计算代码:#include #include using namespace std;/*细节注意:底数:base

2013-08-08 20:10:09 858

原创 每日一题(64) - 打印1到最大的n位数

题目和思路来自剑指Offer题目思路(1):直接输出缺点:无法处理大数据思路(2):字符串模拟输出思路:字符串模拟加减,此时字符串的低位对应着数据的低位。代码:#include #include using namespace std;void PrintNum(char strArr[],int nMaxLen,int& nPrintBit){ i

2013-08-06 13:08:26 830

原创 每日一题(63) - 排列与组合

题目来自网络题目(1)给出位数和进制数,顺序输出所有数举例:0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1代码:#include using namespace std;void Combine(int nArr[],int nMax,int nLen,int nStart){ if (nStart ==

2013-08-05 23:15:24 789

原创 每日一题(62) - 和为s的连续正整数序列

题目来自剑指Offer本文参考博文A Lazy Programmer's Footprint和eaglet的思路,在此谢过。题目:寻找和为s的连续正整数序列。举例:和为15的正整数序列:(1)15(2)7,8(3)1,2,3,4,5(4)4,5,6本文总结两篇博文的思路,共给出三种思路。思路(1):枚举起点 + 枚举区间具体思路:对于每一个起点nSt

2013-08-04 22:02:24 1067

原创 每日一题(61) - 找出左边比它小,右边比它大的数

题目来自网络题目:给出一个元素无序的数组,求出一个数,使得其左边的数都小于它,右边的数都大于等于它。举例:1,2,3,1,2,0,5,6,返回下标6(数字为5)。思路(1):朴素算法,对于每一个数,都检测它的左边和右边是否满足题意。时间复杂度为O(n^2)思路(2)使用变量求解:(1)目前找到符合题意的候选值,nCandid(2)目前已遍历数组的最大值,nM

2013-08-04 09:48:04 8447 2

原创 每日一题(60) - 圆圈中最后剩下的数字

题目来自剑指Offer题目:思路(1):朴素算法,每走m步,删除一个数。游标越界重回起点。复杂度:O(m*n),n为环中数字,m为走的步数。分析,每走m步删除一个数,则删除n-1个数,需要(n-1)*m步,即为O(m*n)。代码:借助STL的list类#include #include #include using namespace std;int L

2013-08-03 22:36:15 1206 2

原创 每日一题(59) - 把数组排成最小的数

代码#include #include #include #include using namespace std;char** GetStrArr(int nArr[],int nLen){ assert(nArr && nLen > 0); char** strArr = new char*[nLen]; for (int i = 0;i < nLen;i++) {

2013-08-01 23:30:09 839

基于链表的快排,只改变结点内容,但不改变链表指向

基于链表的快排,只改变结点内容,但不改变链表指向 C++实现

2013-09-11

c++实现基于链表的快排,改变链表指向,不改变结点指针

基于链表的快排,改变链表指向,不改变结点指针、c++代码

2013-09-11

指针与C程序效率教学探究(指针与数组效率对比)

指针与C程序效率教学探究(指针与数组效率对比),介绍了指针比数组好的原因

2013-06-04

C++写的各种QSort

C++写的各种QSort,还有效率对比代码..

2012-07-29

空空如也

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

TA关注的人

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