自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

only_do_IT

路漫漫其修远兮,吾将上下而求索

  • 博客(37)
  • 资源 (2)
  • 问答 (4)
  • 收藏
  • 关注

原创 VMware 使用 NAT 模式联网问题

之前电脑上一直使用桥接的方式上网,但是这样一直有些麻烦,麻烦就是每次使用 xshell 时得重新输入ip地址,这样确实麻烦,所以我准备换一种模式,使用NAT模式上网,但是问题来了。    我看看了看我的VMware的虚拟网络编辑器里面只有,VMnet0和Vmnet8两个,没有VMnet0。有没有先不说吧,主要是使用VMnet8模式的时候centos虚拟机无法获取ip地址,这下可麻烦了。于是我开

2016-05-31 20:10:56 629

原创 LeetCode 57

这个题接着上个题的,这个题还是给定一个由区间构成的数组(vector),现在又来了一个区间,将这个区间放到"集合"中,但是要求集合最终是有序的。    这个题的解题思路是:遍历一遍数组就可以了!原因如下:    (1). 原区间数组肯定是不能再合并的,所以插入的这个区间,可以联通和它有公共部分的区间,其他的区间肯定不会被改变的    (2). 想清楚上面这个,我们遍历一遍数组,将能够合

2016-05-31 10:20:21 888

原创 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.17' not found

刚刚在Linux写完代码编译执行的时候遇到了这个问题,很奇怪的一个问题,无缘无故的动态库怎么会出现问题呢?我想起来了之前我将gcc升级了一下,可能跟这个有关系,我在搜了一下,果然是这个原因。  首先打印一下libstdc++6.0.so输出库的信息   看看,果然没有 GLIBCXX_3.4.17 ,查看了一下libstdc++.so.6 ,它指向的是一个比较老的库,而我们

2016-05-30 12:44:54 1715

原创 LeetCode 56

这个题的意思是:给定一组"区间",将所有能够合并的区间合并,返回最终的区间的集合。说实话拿到这个题的时候多么希望这些区间是有序的(就是所有区间按照起始大小排好序了),为此我强行将它当作有序的,还写了代码进行提交,然而结果是题目给出了 "[[2,3],[4,5],[6,7],[8,9],[1,10]]" 这样的测试用例。好吧,说明这些区间是无序的,这下难度增加了很多,说实话解题的思路我一时真的没

2016-05-30 11:11:28 1085

原创 Linux下没有 itoa

今天在Linux下写代码的时候发现了一个问题,可以使用 atoi 函数将一个字符串转化为一个整型值。当我反过来转化的时候却发现没有该函数...,不是我记错了,使用itoa函数是可以将整型值转化为字符串的,我之前在windows下使用 VS2013 的时候是有相关函数的,该函数是 _itoa(itoa被_itoa代替了)。    Linux下使用 itoa 的时候提示没有该函数,如图所示:

2016-05-29 23:14:28 18450 6

原创 项目:文件压缩与解压(修复bug)

昨天完成的文件压缩与解压小项目基本上是完成了,但是没有经过严格的验证。为了验证其使用性,我今天又做了一些测试,我网上找了一个比较能够验证各种情况的文件,大小大约是 8M左右,还是可以说明问题的,该文件中有一些编码让我的程序暴露出问题了,主要的问题如下: 1.> 首先有些特殊的编码,总共有256个ASCII,所以我们的统计字符的应该unsigned char ,否则有些编码会导致错误。我们平时可

2016-05-29 00:43:02 666

原创 LeetCode 55

这个题是个复杂的跳台阶问题,主要是测试能否跳到最后,它不像之前那些跳台阶问题了,之前的不会考虑能否跳出去的问题。所以之前的程序用在这里很可能会导致死循环;我的主要思路是"贪心算法+筛选条件"来解题。      1.贪心算法主要是用来减少跳的次数               我们可以从当前位置(cur)可以跳的步数(N),以及当前位置所跳的范围内[cur~cur+N]中每个台阶能跳的最大距离

2016-05-28 12:13:54 3210

原创 项目:文件压缩与解压

前段时间研究了一下哈夫曼树,也知道了其主要应用是哈夫曼编码,那么我想既然有编码那么我们是否可以利用这点来实现一个文件压缩呢?答案是可以的,而且我已经实现了”源码URL“,这里我就不将代码放在下面了,下面我就说一下主要思路吧    1.统计:首先读取一个文件,统计出256个字符中各个字符出现的次数以及字符出现的总数    2.建树:按照字符出现的次数,并以次数作为权值建立哈夫曼编码树;建好树

2016-05-27 23:49:55 985

原创 LeetCode 54

这个题挺有趣的,螺旋数组,意思是给定一个m*n的数组,按照螺旋的形状去遍历这个数组,求出螺旋遍历的数组的顺序。    还记得前面的那个旋转数组的题吗?这个题和那个题异曲同工,主要的思路是:先遍历一圈,然后依次遍历里面的圈。不过这道题需要注意的旋转数组的题要复杂一些,条件的控制复杂一些,我举个例子吧:    我们可以顺时针方向遍历数组,就上上图所示一样;不过上面两个数组有什么特点吗?

2016-05-27 12:09:43 835

原创 LeetCode 53

此题是给定一个数组,找出数组中连续位置(一个区间)中所有数的和并且该和是所有区间中最大的。这个题看起来很难的样子,但是我们仔细想想的话,它的解法挺简单的!   主要思路是使用两个临时值,cursum(用来保存当前和),maxsum(用于保存最大和),方法是。从头到尾依次相加各个数,若当前和cursum > maxsum的话,那么将cursum的值赋给maxsum;若cursum ,这时候应该将

2016-05-26 16:57:53 685

原创 LeetCode 52

这个题的意思是让我们求“n 后问题”的解法的数目,其实和上一个题基本是相似的,只需要做少量的改动就行,主要的思路如下:1.使用 vector 保存每一层的Queen的位置,然后往下一层递归,测试下一层Queen的位置,若符合要求就继续上下测试,若不符合则更换位置继续测试。2.测试函数的编写需要注意,记得斜线sh

2016-05-25 11:23:48 3708 3

原创 LeetCode 51

相信学习过算法的人都知道“N后”问题,今天我再次遇到了N后问题,之前确实只是知道算法思想,从来没想到到能自己实现“n后”问题,不过就在今天我实现了以前未达到的一个目标!“n后”问题就是在一个 N*N 的方格中放入n个皇后,但是皇后可不是一般人,她比较刁蛮任性,只要是和她在一条线上(包括水平方向和竖直方向)的所有人她都攻击,不仅如此连在她斜线上的也不放过,所以我们这些程序员没有办法,只有设计出一种让所

2016-05-24 12:17:37 662 1

原创 详细讲解赫夫曼树

写这篇文章的时候我已经是可以独立写出建立一颗赫夫曼树的代码了,其实内心还是挺有感触的,当时觉得很高大的东西现在也不过如此!         赫夫曼树的定义是:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为赫夫曼树(Huffman tree)。哈夫曼树又称为最优树,其相关术语如下:  1、路径和路径长度:在一棵树中

2016-05-23 20:57:08 1011

原创 [STL] List 中sort为什么采用归并排序

这几天在看STL(SGI版本----侯捷),在看完第一章后有点懵,但还是很震撼,STL的设计理念确实很好,至于有多么好我们都懂,所以就不再评价了。     由于刚刚开始看,所以有些东西并不是很透彻,也就没有发表观点,以免误导大家。今天主要是想说一下STL中List容器中的sort排序为什么采用归并 而非 快排?下面就请看看我的阐述吧。     首先看看STL中的源码是怎么写的吧:

2016-05-22 19:07:16 2111 2

原创 LeetCode 50

这个题让我们自己实现一个 pow(x,y) 函数,看起来简简单单的一个函数,我相信绝对可以难倒一片人的,因为我们很难将它"写对"。我之前其实也见过这个题的,在剑指offer上就出现过了,我感觉我写这个算法没有问题的,我考虑了很多方面而导致程序看起来比较的乱,最终修改了好几次才正确。      我个人感觉这个题比较重要的一点是 pow(x,y) 的功能的处理比凸显代码能力吧,首先比如: pow(

2016-05-22 17:44:08 3209

原创 LeetCode 49

这个题目的意思是,给出一组单词,找出其中所有"异构"的单词组,异构的条件是单词的组成字符的种类和各字符出现的次数相同,上面图中的例子就可以说明这个问题,不过这个题也有一些要求:最后各个单词组必须有序,即按照单词大小排序。     我看到这个题的时候,首先的思路是:使用 map 结构,然后将每个单词排序----------异构的单词排序后一定相同,并以排序后的单词作为key值,然后循环去找和当前

2016-05-21 18:04:36 742

原创 LeetCode 48

这个题的意思是给你一个2D的图像(我们知道2D图像是由(x,y)像素点组成的),题目要求我们将这幅图形顺时针旋转90度,确实是一个比较有趣的题目。     如果你是第一次拿到这个题的话确实比较难动手,但是一旦你见过这类似的题目(比如:剑指offer上面的螺旋数组),那么你就瞬间有思路了。我先画个图解释一下这个题的思路:     主要思路也是由外向里,每次旋转掉一层,重复上面操作,知

2016-05-20 21:23:32 4700

原创 LeetCode 47

这个题是对上一个题的变形,变化的条件是数组里面可以出现相同的元素,这样确实加大了难度。不过在上个题的基础上我们可以把精力主要放在怎么处理重复的数字。如果没有记错,我们之前的一道题也是类似情况,我看了一下是 LeetCode 40 ,那个题是nsum问题,这里我们还是可以借鉴那种思想去处理重复的数字,我们还是用 prev 变量来保存已经使用过的值,下次遇到相同的值的时候我们就可以直接跳过,利用这样的

2016-05-19 18:22:44 4025

原创 LeetCode 46

做完了字符全排列后又来道数字全排列?没错,这道题是数字全排列,给你一个数组,数组里面的元素不同,问这些数字有多少种组合方式。这道题的题目比较直观,很容易理解,于是我们也就可以更容易的去思考解题方案了。    毫无悬念,这道题用递归解答比较容易吧?其思想是:分别将某一个数字当做一个独立单位;然后不断将剩下的数字当做单独的单位按次序加入进来;递归回来后与其后面的数字交换顺序然后重复操作;最后就可以

2016-05-18 15:47:04 775

原创 LeetCode 45

这个题目是一个特殊的跳台阶问题,给定一个数组,每个数组里面存放的是该位置可以跳的步数,求出跳到最后位置所需要的最少的步数。我看到这个题目的时候脑子里面的第一印象是递归,递归去求解肯定是可以的,于是我写了下面的代码(结果是超时!)解法一,递归查找,时间效率太低了。。。不行class Solution {public: int jump(vector& nums) { /* 数组

2016-05-17 20:03:04 2924

原创 LeetCode 44

这道题是一道类似正则表达式匹配的题目,但是我发现这个题的难度比之前那个题的难度高几个档次。如题目所示:'?'可以匹配任意一个字符,而 ' * ' 则可以匹配任意一个字符串,给你两个字符串,主串和模式串,判断他们是否可以匹配。     这道题的难度在于‘*’的处理,到底‘*’要和多少个字符串匹配呢?这个问题不好解决,我一开始的思路是:1.遇到s[i] = p[i] || p[i] =='?'

2016-05-16 18:13:47 3911

原创 LeetCode 43

这个题是个大数乘法运算的题,两个乘数以string的形式给出,求他们相乘的结果,题目给的限制条件是:        1.所给的数字可以任意的大,但是不为负数        2.不能将题目所给的string转化为整数        3.不能引入大数运算相关的库从题目的描述中我知道了这个题让我们自己去实现大数运算的乘法,就是这么个意思,那么我们开始吧:在纸上算的时候我们都会,可是用程序

2016-05-15 15:49:01 4315

原创 LeetCode 42

这个题是给出一个数组,求该数组元素所构成图形能装水的量,如上所示图形给出了一个示例,这个题是一道很复杂的题,这种题型必须得在纸上画一画可能出现的情况,否则真的很难得出正确答案的。我的思路是去找低谷,有低谷一定可以构成”容器“,需要注意的细节如下:   1. 首先找到低谷,找连续递减的序列的最后位置,找到该位置了,再去找递增的序列,找到顶部,为了方便说明我画图分析一些容易出错的地方吧。

2016-05-14 18:56:35 3312 2

原创 布隆过滤器-----时间+空间

最近在研究哈希表,写了闭散列和开散列的代码,哈希表的查找效率确实比较高,但是我发现哈希表的空间效率却有点低,一个好点的哈希表估计能达到50%的空间利用率吧。     我们知道STl中有一种数据结构叫做 bitset 个人觉得叫 bitmap 会更形象一点(这里不去关系这个了),位图是具有很高的空间效率的数据结构,在处理有些大数据的时候能够发挥出很大的作用。     看到这里应该懂我了吧,既

2016-05-13 15:25:53 1194

原创 LeetCode 41

这个题是找出无序数组里面的第一个不连续的正整数,而且时间复杂度不超过O(n)。首先分析一下:数组是无序的,需要找出第一个不连续的数字,而排序的算法一般很难达到O(n)的时间复杂度。这个时候我们必须得明白一种做法:空间换取时间的做法,我首先想到的是位图即bitmap(STL中交bitset),位图可以节约空间,而且可以判断出数字是否出现,真的是比较理想的数据结构。于是我就在函数中使用了bitset:

2016-05-13 14:50:47 4132

原创 LeetCode 40

这个题目还是nsum类型的,不过比上个题更难。上个题的复杂性不是很高,因为不需要考虑到元素的重复性对结果造成干扰,但这道题的话,还是在“集合”里面找出 nsum = target, 每个元素只能使用一次且最后的结果不能重复。那么对于“集合”里面出现的重复的元素的处理就特别棘手。其实代码和上个题的差不多,其实只多了几行,但是这几行代码我却想了一天,甚至睡觉前还想了一段时间,但是下午在做实验的时候突然

2016-05-12 18:53:12 3897

原创 LeetCode 39

如果还记的话或者写过LeetCode的人会知道,这是nsum,已经不再是之前的twosum,threesum,foursum了。之前是都是使用 i 层循环解题的,那么现在n层循环理论上是可以解题的(其实应该不行),但是n是不确定了,而且是可变的,其变化范围是[1,n]说道这里其实想说明的是,我们要换种思路去解题了。我在看到这个题的时候想到的思路是:        我们从小到大一个一个将最小

2016-05-11 15:44:56 3554 1

原创 LeetCode 38

这个题是个数字规律题,题目的意思是,给定一个值 n,按照规律列出第 n 个数字,规律如上图中所示,大概的意思是,表示左边的数字的下一个数字,例如:1.    “1”,它由 1 个 1 表示,则变成“11”2.    “11”,它由2个1组成,则变成“21”3.      "21",它由1个2和1个1组成,则变成"1211"      规律就是上面这样了,还是比较容易理解。代码如下:

2016-05-10 19:29:43 924

原创 LeetCode 37

果然不出所料,我还是遇到这个题目了,哈哈,既然那么有缘份,那么我们怎么能不解决这个题呢?数独问题求解,我上次就想过这个问题,一般思路是用回溯法,就是补空位然后测试该值是否合法,一步一步往下递归,遇到不合法的就回溯到出问题的位置,然后修改该值,再进行测试,这样有两种结果 1.要么最后成功 2.要么一个位置 1~9 都不能满足题意得话则直接退出      我觉得这种题目,首先要理解解题的思路,我是

2016-05-09 16:46:40 1012

原创 Centos下更新 gcc 版本至 GCC 6.1.0

最近linux的gcc版本更新到gcc 6.1.0 版本了,我查看了一下我的机器上的GCC版本.... ------------- GCC 4.4.7    我去,这也太low了吧,而且我们知道的GCC 4.4.7 是不支持 C++11 的,我的脾气比较暴躁,果断要升级到GCC 6.1.0 版本!     我开始的时候使用了 yum update gcc 命令,可恨的是机器又将gc

2016-05-08 16:45:31 35168 6

原创 LeetCode 36

这个题目是一个“数独”问题的求解,数独就是由9个九宫格组成的,规则是每行没列包含数字1~9,且每个九宫格内也是有1~9组成的,现在让我们判断数独是否合法。         这个问题比较常规了,我们按规矩行事就行了,既然数独的规则是:每行,每列,每宫,都是数字1~9,(此题中并没有全部给出数字,没给出的地方用‘ . ’代替),所以我们只要判断每行,每列,每宫的数字字符是否合格即可     这

2016-05-07 20:23:12 993 1

原创 LeetCode 35

这个题目还是属于查找类的题目,和前面的题目比较类似,题目的要求是给定一个target,在有序数组里面查找该元素的插入顺序,若存在了则返回该元素的下标。这道题比较直观,所以比较容易动手,需要注意到的应该就是边界条件的问题吧,比如说:(1). 目标元素比排序数组中的最小元素还小(2). 目标元素比排序数组中的最大元素还大      请看代码吧,代码写的还是比较清晰的class Solu

2016-05-06 14:00:44 961

原创 LeetCode 34

找排序数组特定元素的区间,意思是找开始下标和结束下标,但是题目给了要求时间复杂度低于 O(n),这就告诉我们不要使用遍历数组的方式来解题。我们查找单个元素的时候可以二分查找来完成,但是找区间的时候改用什么呢?比如:数组的排列顺序为:5 7 7 8 8 10,而 target = 8 ,我们该怎么找呢?答案还是二分查找,但是思路是这样的:我们先用二分查找找到 target 的大致位置,然后再利用该位

2016-05-05 18:00:51 568

原创 LeetCode 33

这个题是将一个排序数组部分扭转一下,导致数组成为部分有序的两部分,现在给定一个target,最后找出该target的下标,若不存在则返回-1,题目意思还是很好理解的,但是求解的时候确实比较麻烦的。为什么麻烦呢?因为遍历一遍数组的方法并不适用,而且这样的做法也没有意义!     所以我们得另外开辟路径,我们平时在查找有序数组的时候用的最多的方法是二分查找法,那么这个题能否使用二分查找呢?答案是可

2016-05-04 15:14:51 2226

原创 LeetCode 32

这个题目比较难想到,我刚刚开始以为使用栈就可以解决问题,因为数据结构的栈可以用来判断符号的匹配,相信我们也都写过相关的代码吧。但是这个题并不是简单的匹配而已,它要求的是最长的匹配符号的长度,而且字符串中只有 '(' 和 ')'两种,所以我们也比较容易判断是否匹配,不过要达到题目的要求还有一定的难度。      既然以前使用栈的时候可以判断符号的匹配问题,那么这个题的思路也跟栈离不开,但是需要对

2016-05-03 20:56:51 3896

原创 LeetCode 31

这个题目的意思结合所给示例以及题目描述,可以知道。给一个数组,求该数组所组成的数字的全排列的下一个数字,这句话不懂没关系,我举个例子你就懂了     例如:    1.若给的是 1 2 3 ,那么你要将数组内容变为 1 3 2;   2.若给的是 3 2 1 ,那么i要见数组的内容变为1 2 3;其实这是一个循环的排列,就是你给任意的数字排列,都可以找到下一个排列,大概就是这样的情

2016-05-02 14:53:49 4008

原创 LeetCode 30

刷到这里的时候我感觉到了痛苦,我觉得这些题的难度在增加,就拿这个题来说吧,我折腾了一两天,最后还是借鉴了一下网友的思路才做出来的,困扰我的有以下几点。1.这英文单词虽懂,可是题目却还是没有理解,问了很多人他们也不知道,其中还问了一个过了专八的人,她的回答是专业性太强,不理解,很多网友说的也不清楚,很容易误导人的2.所学的知识有些不够,或者说有些东西用的不熟练,比如这道题的map,因为使用不

2016-05-01 20:11:02 4712

人体时钟插件

2017-01-05

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

TA关注的人

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