自定义博客皮肤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

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

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

原创 C++中的重载 覆盖 隐藏的规律

最近在看C++相关内容,以前没搞清的一些东西,现在再去复习一下,有些东西弄懂了以后的感觉特别好。以前我对C++重载,隐藏,覆盖不是很了解,所以我就花了一些时间去看看规则以及结合资料,进行了总结,规律如下:成员函数被重载的特征是:具有相同的作用域(同一个类中)函数名字相同参数类型,顺序或数目不同(包括const参数或非const参数)vortual关键字可有可无

2016-04-30 23:41:24 439

原创 shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下。     保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的“sed command(sed命令)”就一条接着一条进行处理,直到脚本执行完毕。然后该行被输出,模式被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文

2016-04-29 00:04:24 8058 1

原创 LeetCode 29

题目意思清晰明了:求两个数的商,不能使用乘法,除法或者求模运算等等。看似很简单的一道题,可是在排行榜上的正确率却是最低的一道,原因是情况很复杂,边界很难控制。需要考虑到的细节特别多,如:正负号,除数和被除数的取值,还有就是越界情况。其中越界情况最难考虑到,我也给拉低这道题的正确率增加了一份”功劳“,真的测试了好几遍才将条件考虑全面,我的代码中写有很多注释(大部分以测试用例形式给出)可以帮助大家分析

2016-04-28 19:45:25 3744

原创 LeetCode 28

这道题是字符串匹配题,返回匹配的位置。相信很多人都见过,我们很容易用暴力求解的方法解答出来,但是我想要借此说明的是一个算法----MKP算法,当然我在这里并不会详细介绍MKP算法,因为这个算法已经被很多人讲解过了,没有必要再讲一遍。我在这里想要做的是教大家如何构造出next数组,以及讲解匹配的规则。      大家请看上面的图,假如我们的模式串为“abcdabcddd”,那么我们可以知道前

2016-04-27 16:59:29 967

原创 LeetCode 27

这个题目给的数组是无序的数组,要求删除特定的元素,然后返回剩余数组的长度。还是比较简单的一个题目,相当于是放松一下我们的心情,增加点自信心,不至于一直做难题而自卑。好了,题目的主要思路是:依次找到不是val的值,然后将它加入到前面的序列中,不过需要注意一点:     *这个题目还是需要覆盖一些值,第一次出现 val 值之前的所有位置是不能覆盖的,所以在未出现 val 值之前,pos还是需要和n

2016-04-26 17:54:25 4413

原创 LeetCode 26

这个题目的意思是给你一个数组,删除里面重复的数字,然后返回数组的长度。第一反应是它很简单,不过还是调试了几次才写出来的,确实是一个循环就能解决的问题,不过我觉得其中还是需要注意一下东西:1.先找到第一次出现相同的位置,这样方便解题(我是按照我下面的代码来说明的,当然你可能会有别的方法)2.遇到相同元素时,记录第一次出现的位置prev,然后找到不是这个元素时停止,将这个元素加入到不重复序列中

2016-04-26 17:31:10 680

原创 LeetCode 25

怪不得很多人都说LeetCode上的题好,我知道原因了,LeetCode上的题扩展性真的很高,相同的情况的不同变形,这真的会让你掌握了这类型的题的做法,我想每种类型的题做了好几个的时候,人的印象就会深刻很多,思维的严密性也会增强很多。这道题的意思我想大家通过题目给的例子应该很快就能理解吧。我就拿这道题和上一道题来对比一下,上道题中每次交换的只有两个节点,而这道题的节点数是k个。两者具体的差别如下:

2016-04-25 16:35:08 1309

原创 LeetCode 24

这个题的意思是将一个链表,按照每两个节点逆序。我想了一下,主要是对链表的操作以及对指针的交换,掌握了方法以后确实不是很难,但是需要注意的是不要将指针给弄错了,否则容易导致链表信息丢失。     我的方法中使用到了四个主要指针,我画了个图来解释它们:这四个指针的作用通过上图,大家应该能够理解了,因为我们需要做的事有三件:(1)交换中间部分 (通过prev和cur) (2)连接

2016-04-24 15:37:12 3341

原创 LeetCode 23

合并K个排序链表,没错。我的思路是分别从 K 个链表的中找出最小的一个值,然后依次插入链表,最后遍历完所有链表就好了,也没想中的那么难呀,循环遍历的思路如下: (先说明一下,它是不合格的)主要思路是:1.首先从所有排序链表里找一个最小val节点作为头结点2.依次循环在各个链表里面找到最小节点摘下来尾插,循环结束的条件是当链表的数目为0或者为1的时候结束(可以通过lists[i]==NU

2016-04-23 14:16:55 2057

原创 LeetCode 22

这个题也是括号的匹配,但是不是让你判断是否匹配,而是让找出所有匹配的情况,与以前的题目并不一样,难度也不是一个等级的。看到题目的测试用例,我的第一反应是循环,因为我对循环比较敏感吧,所以我用循环写了一下,但是我发现,n=2的时候很简单就写出了代码,但是n=3的时候就有点麻烦了,当n=4的时候--------我感觉大脑要炸了...     这说明了这个思路不行,必须换种思路去解题,所以我给自己一

2016-04-22 15:02:19 912

原创 LeetCode 21

已经已连续做了好几道题了,感觉停不下来了,突然来了兴趣了,这个题让我觉得思路很清晰,合并两个排序的链表。我的思路如下:分别从两个链表里面摘取节点放到新的链表中,最后摘到一个也不留就行了。不过需要注意的是一些小细节,主要的注意事项如下:1.两空(两个空的链表)2.一空(一个链表为空一个部位空)3.一个摘完了,另外的可能还有节点(这个需要好好注意一下,很容易出错的)好了,见代码吧:

2016-04-22 09:14:29 1256

原创 LeetCode 20

看到这个题的时候我们是否会记起点什么呢?是不是很熟悉的感觉呢,没错就是括号匹配问题。我们知道后会立马想起一个数据结构---栈。(1).我们需要借助一个栈来保存括号的左边部分找到右边的部分时,找出栈顶元素,若两者匹配,则删除栈顶元素,继续下一轮遍历。(2).如果当前元素是括号的右边部分,但是却不合栈顶元素匹配,则说明整个匹配失败。(3).需要注意的是,栈空的情况。最后是通过栈是否为空来判

2016-04-22 08:53:06 1228

原创 LeetCode 19

终于碰见了和数据结构相关的题目了,这也意味着复杂度在增加。来看看这道题吧,删除链表的倒数第k个节点,我们有必要先找出链表的长度然后再确定倒数第k个节点吗?我觉得这是没必要的。因为我们的方法比这样更巧,听起来高大尚一些。解题思路以及注意事项如下:1.我采用的是两个指针,一快一慢,快的先走k+1步,然后快指针和慢指针一起走,直到快指针走到尾2.为什么要快指针要走k+1步呢?我们仔细想想一下,我

2016-04-22 08:18:41 1523

原创 LeetCode 18

如果说求两个数相加是轻松,那么求三个数相加则是痛苦,如果说求四个数相加呢-----绝望。没错,拿到这个题的时候确实有些绝望,但是既然开发这个题的人如此刁难我们,我们也不能放弃,不要辜负别人的一番好意,所以我咬牙继续。经历过前面的风雨,我们也学会了成长,这道题是建立在前面的题的基础上而开始的。题目的要求比较严格,要求四个数的和和target的值相等,且四个数字不重复且升序。所以我们得一个

2016-04-21 23:25:51 1617

原创 常见排序算法总结

我们学习过很多排序算法,但是我们又很难将它们记住,当面试的时候问到其中的一个排序算法的时候,或者需要解决某些问题的时候,我们需要选择一些排序算法。如果我们此时不熟悉常见排序的特点,那么我们真的会很难受的,我感觉我就经历过这种事。所以我觉得我有必要重新认识一下常见排序算法并将它们总结一下。好,闲话不扯了,我们开始吧。1.冒泡排序代码:void BubbleSort(int

2016-04-20 23:25:30 567

原创 LeetCode 17

这个题目有意思,和生活接近,题目的意思一看就知道,应该是字符串的全排列吧。但是需要注意的是有几数字字符是没有对应的字符串的,比如‘0’和‘1’,所以我们的输入字符串中若有他们,则将它们过滤掉。这个题我的思路是递归,因为这种类型的题目递归思路清晰明了,若要使用循环,则会形成n层循环,所以循环的思想应该被淘汰掉。我在做这个题的时候喜欢先把“多余”的东西先给它解决掉,比如‘0’和‘1’这两个数字,我先遍

2016-04-19 17:24:27 1374 2

原创 LeetCode 16

上个题绞尽脑汁的思考测试终于弄出结果了,所以遇到这个题的时候感觉松了口气。这个题要求三个数的和最接近所给的数,意思就是找一个数组中三个数的和,使它最接近你所给的目标。我的思路是遍历,因为不遍历完所有情况根本就无法推测结果,难道大家还有别的做法能减少计算的次数吗,我猜想如果排序后还是有可能的排序后能推测出数字的和范围,这个办法应该可行的,但是仔细想想的话还是比较麻烦,需要考虑到的细节又会

2016-04-18 20:02:03 2542

原创 LeetCode 15

这个题确实比较复杂,我刚刚开始的思路是先将数组排序,然后从左向右遍历,然后用两个变量lpos,rpos分别指向left+1 和 nums.size()-1,然后求三者的和,若和sum 0则让rpos减1。想法不错,可是现实很残酷。这样的解很容易错过真实解,我测试了很多遍,总有测试用例无法通过。其中还有一个时间复杂度太高了也没通过测试。这个题大家可以自己去实现试试,真的错误点太多了,最后

2016-04-17 21:31:31 2932

原创 LeetCode 14

我觉得人要知足啊,不要做每到题的时候都想着有没有最优化的办法,这样没什么不好,但是这样也让你很伤脑经,我个人觉得还是要由浅入深,先想出简单办法,再去想优化的办法。这个题的解法真的不难,但是这个题目的意思却是能让人思考好一会儿,我想了半天,是不是用strncmp一个一个的比较啊,有没有更好的办法呀,最后发现参数时string类,所以顿时有了思路。思路就是对比呗,但是我们得做点优化:(

2016-04-16 15:11:26 3347

原创 LeetCode 13

哈哈,有了上个题的经验,我们是不是应该趁热打铁呢?这次是讲一个罗曼的(罗马)数字转化为一个整形数字,所以我们逆向去推理上个题,其实这个题很有规律的,将string数组遍历一遍就可以求解了,废话不多说,见代码:class Solution {public: int romanToInt(string s) { //和上道题刚好相反 int lastnum

2016-04-15 21:27:34 4740 2

原创 LeetCode 12

这道题的意思是将整形数字转化为罗马数字,只要了解了罗马数字的构成特点就知道怎么将整形数字转化为罗马数字,转化规则如下:个位数:  Ⅰ【1】  Ⅱ【2】 Ⅲ【3】  Ⅳ【4 】  Ⅴ【5 】   Ⅵ【6】 Ⅶ【7】   Ⅷ【8】  Ⅸ【9】  ·十位数举例  Ⅹ【10】 Ⅺ【11】Ⅻ【12】 XIII【13】XIV【14】 XV【15】XVI【16】X

2016-04-15 20:53:21 674

原创 LeetCode 11

这道题其实不难,但是需要注意题目的要求,理解题目意思很重要! 首先我来说说题目意思吧,这道题是给你n个数,存在vector中,每个数和其下标组成一个坐标(i,ai),要求其中两个点以及他们与x轴的垂线以及x轴三线组成的图形的能装下多少水。注意,这不是求面积!,我画个图分析一下吧我们要求的是矩形的面积,而不是梯形的面积,这和生活有一定联系吧,倾斜的水会洒出来的,所以我们需要求什么已经

2016-04-14 17:04:30 2730

原创 shell脚本学习笔记 (流编辑器sed)

shell脚本学习笔记(sed)

2016-04-13 20:55:59 6011

原创 shell脚本学习笔记 (正则表达式)

shell脚本学习笔记(正则表达式)

2016-04-12 20:13:39 5087

原创 LeetCode 10

实现"正则表达式"

2016-04-12 15:37:01 791

原创 LeetCode 9

class Solution {public: bool isPalindrome(int x) { if( x < 0 ) {//负数不是回文数 return false; } int tmp = x; int

2016-04-12 13:53:38 813

原创 LeetCode 8

atoi的陷阱

2016-04-11 18:24:25 2761

原创 shell脚本学习笔记(语法)

shell脚本学习笔记(语法)

2016-04-10 16:10:32 2056

原创 shell脚本学习笔记(符号)

shell脚本的学习笔记

2016-04-10 12:23:38 1006

原创 shell脚本学习笔记(shell脚本实现文件的创建)

shell脚本 > /dev/null 2>&1

2016-04-10 10:49:50 6833

原创 LeetCode 6

这个题是个智力题,重要的是找规律,我来描述一下问题吧:给一个字符串S 和行数n ,按照题中的格式构成n行的形状,形状大概如下: (3行)然后按照水平方向取出,最后返回 “PAHNAPLSIIGYIR”我觉得将输入的字符串直接返回好像和最后要得到的结果一样,不过这种做法万万不可。我们还是按照规律来找吧,规律如下:1.第一层和最后一层:可以看出第一层和最后一层比别的层数的元素少

2016-04-09 12:27:58 606

原创 LeetCode 5

找一个字符串的最长回文子串

2016-04-09 10:45:46 549

原创 github(To prevent you from losing history, non-fast-forward updates were rejected)

[admin@bogon project]$ git pushTo https://admin-zou@github.com/admin-zou/project.git ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to 'https://admin-zou@git

2016-04-08 19:50:29 2256

原创 构造函数的返回值

鲜为人知的C++构造函数

2016-04-08 10:24:56 2244

原创 LeetCode 7

7.Reverse IntegerReverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321这道题的意思是翻转数字,但是不改变正负号,这道题看似很简单,但是暗藏玄机,稍不注意就会出错,我也试了好几遍才通过的,最可能出错的是溢出,包括上溢出和下溢出。

2016-04-07 22:18:23 495

原创 模拟实现操作系统内存分配与回收

操作系统的内存分配与回收的,这里主要模拟实现了操作系统的首次适应算法和最佳适应算法来分配内存的,代码已经完成有一段时间了,但是忘记了分享一下,今天想起来了,所以特意写出来和大家分享一下,地址:http://https://github.com/admin-zou/DS/tree/master/systemMemDR

2016-04-06 22:23:13 9047

原创 模拟实现操作系统调度算法

结合自己所学知识(数据结构)以及对操作系统调度算法的理解,模拟实现了一下操作系统的调度算法,主要包括先来先服务和短作业优先调度。

2016-04-06 22:01:14 6357

原创 LeetCode 4

Median of Two Sorted ArraysThere are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)

2016-04-06 17:50:43 645

原创 LeetCode 3

3. Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters

2016-04-05 19:02:43 473

原创 LeetCode 2

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two nu

2016-04-04 16:50:18 447

人体时钟插件

2017-01-05

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

TA关注的人

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