自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

兰亭风雨的专栏

欢迎关注我的原创公众号:兰亭风雨(lantingfy)--倚栏听风雨,淡看江湖路,淡泊以明志,宁静以致远。

  • 博客(29)
  • 资源 (14)
  • 论坛 (2)

原创 【CareerCup】Stacks and Queues—Q3.4

转载请注明出处:http://blog.csdn.net/ns_code/article/details/22509253    题目:    Implement a MyQueue class which implements a queue using two stacks.    翻译:    使用两个栈实现一个队列MyQueue。    思路:    两个栈模拟一个队列,主要是用两个栈的p

2014-03-30 11:38:32 2036

原创 【CareerCup】Stacks and Queues—Q3.3

转载请注明出处:http://blog.csdn.net/ns_code/article/details/22493621    题目:    Imagine a (literal) stack of plates. If the stack gets too high, it might topple. Therefore, in real life, we would likely start

2014-03-30 11:38:23 2465

原创 【CareerCup】Stacks and Queues—Q3.2

翻译: 只用一个数组实现三个栈 思路: 用一个数组实现一个栈很容易,我们在Q3.1中也是用数组来模拟栈的。如果要用一个数组来实现三个栈,在压栈的时候,不管是哪个栈的push操作,直接将元素顺序压入到数组中,同时将本栈的栈顶索引指针指刚刚压入的元素即可,如下图所示(三种颜色分别代表三个栈,箭头指向每个栈的栈顶):

2014-03-29 08:31:50 2509

原创 【CareerCup】Stacks and Queues—Q3.1

要求实现一个栈,除了有push和pop操作外,还有一个min函数返回栈中的最小值, push,pop和min函数的时间复杂度都要为O(1)。 思路: push和pop操作很明显就是O(1)的时间复杂度,关键是min函数,一般来说,我们求栈中的最小值,会从栈顶开始遍历栈,并设置一个变量Min来保存每次遍历时的最小值 ,遍历到比Min还小的元素,就将该元素赋给Min,但这种方法的时间复杂度为O(n)。 我们可以考虑用空间换时间的思想来提高时间复杂度(很多时候时空均衡都是提高时间复杂

2014-03-29 08:31:20 2604

原创 【CareerCup】 Linked Lists—Q2.5

转载请注明出处:http://blog.csdn.net/ns_code/article/details/22097191    题目:    Given a circular linked list, implement an algorithm which returns node at the beginning of the loop.DEFINITION    Circular link

2014-03-27 00:00:32 2452 5

原创 【CareerCup】 Linked Lists—Q2.4

题目: You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a function that adds the two numbers and returns the sum

2014-03-26 00:09:55 2473 3

原创 【CareerCup】 Linked Lists—Q2.3

题目: Implement an algorithm to delete a node in the middle of a single linked list, given only access to that node. EXAMPLE Input: the node ‘c’ from the linked list a->b->c->d->e Result: nothing is returned, but the new linked list look

2014-03-24 10:13:57 2390

原创 【CareerCup】 Linked Lists—Q2.2

题目: Implement an algorithm to find the nth to last element of a singly linked list. 翻译: 设计算法,从一个单链表中找到倒数第n个元素。 思路: 由于是单链表,我们只能从个前面遍历。我们可以有以下三种思路: 1、先遍历整个链表,求得链表的长度len,而后再从头遍历,找到地len-n(假设链表的首节点为第一个节点)个节点,即为导数第n个节点,这样时间复杂度为O(n),

2014-03-23 08:42:55 2466 2

原创 【CareerCup】 Linked Lists—Q2.1

题目: Write code to remove duplicates from an unsorted linked list. FOLLOW UP How would you solve this problem if a temporary buffer is not allowed? 翻译: 写一个程序从一个未排序的链表中移除重复的项 另外,如果不允许使用临时缓存,你如何解决这个问题?

2014-03-21 08:14:55 2239 3

原创 【CareerCup】 Arrays and Strings—Q1.7

题目: Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., “waterbottle” is a rotation of “erbottl

2014-03-20 08:32:41 2515

原创 【CareerCup】 Arrays and Strings—Q1.6

题目: Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0. 翻译: 写一个算法,对于一个MxN的矩阵,如果矩阵中某个元素为0,则将它所在的行和列都置为0. 思路: 肯定要遍历该矩阵,但显然我们不能遇到为0的元素就直接把它所在的行和列的元素置为0,这样遍历到后面的0时就不知道该位置本来就是0还是后来被置为

2014-03-20 08:23:23 2267

原创 【CareerCup】 Arrays and Strings—Q1.5

题目: Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place? 翻译: 用NxN的矩阵来表示一幅图像,图像中每个像素占4个字节,写一个函数把图像旋转90度。要求旋转操作尽可能原地操作(即不开辟额外的存储空间)。

2014-03-19 00:02:45 2708 2

原创 【CareerCup】 Arrays and Strings—Q1.4

题目: Write a method to decide if two strings are anagrams or not. 翻译: 写一个方法来判断两个字符串是否互为变位词。 注:如果构成两个字符串的字符完全相同,而对应字符所处的位置不同,则称这两个字符串互为变位词。如:"abbfcad"和"facbdab"互为变位词。 思路: 很多人应该一下子就能想到对两个字符串按照在字典中出现的先后顺序进行排序,而后再对排序后的两个字符串逐个比较,如果两

2014-03-19 00:01:57 3080 3

原创 【CareerCup】 Arrays and Strings—Q1.3

题目: Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.FOLLOW UP Write the test cases for t

2014-03-18 00:00:02 3002

原创 【CareerCup】 Arrays and Strings—Q1.2

题目: Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.) 翻译: 编写代码,实现翻转一个C风格的字符串的功能。(C风格的意思是"abcd"需要用5个字符来表示,最后一个字符为空字符'\0') 思路: 最简单的方法当然是取得字符串的长度,而后一个

2014-03-16 00:12:19 2965

原创 【CareerCup】 Arrays and Strings—Q1.1

从今天开始要刷这个网站了,时间再紧,也要坚持下去! 题目: Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures? 翻译: 实现一个算法来判断一个字符串中是否没有重复的字符,只能使用基本的数据结构。 思路: 我们这里假设字符串为26个小写字母(当然我们可以

2014-03-15 19:44:34 3590 1

转载 程序的内存分配:栈区(stack)堆区(heap)。。。(转载)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两回事,分配方式倒是类

2014-03-15 00:11:16 9329 1

原创 【数据结构与算法】字典树(附完整源码)

字典书(Trie Tree),又称单词查找树,是键树的一种,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。 字典树有3个基本性质: 1、根节点不包含字符,其余的每个节点都包含一个字符; 2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 3、每个节点的所有子节点包含的字符都不相同。

2014-03-14 00:01:15 8818 19

原创 【算法拾遗】三种方法求连续子数组的最大和

这是一道考的烂的不能再烂的题目,但是依然有很多公司乐于将这样的题目作为笔试或面试题,足见其经典。 问题是这样的:一个整数数组中的元素有正有负,在该数组中找出一个连续子数组,要求该子数组中各元素的和最大,这个子数组便被称作最大子数组。比如数组{2,4,-7,5,2,-1,2,-4,3}的最大子数组为{5,2,-1,2},最大子数组的和为5+2-1+2=8。 下面按照时间复杂度逐步优化的顺序依次给出这三种算法。

2014-03-13 00:09:18 33564 26

原创 【数据结构与算法】HashTable相关操作实现(附完整源码)

学过Java的人肯定对Hash这个词非常之熟悉,HashTable、HashMap、HashMap等都是对哈希表的封装或改进。这次我们来看下哈希表用C语言表示的封装实现 哈希表又叫散列表,是实现字典操作的一种有效数据结构。哈希表的查询效率极高,在没有冲突(后面会介绍)的情况下不需经过任何比较,一次存取便能得到所查记录,因此理想情况下,查找一个元素的平均时间为O(1)。 哈希表就是描述key—value对的映射问题的数据结构,这在Java中大家都知道,更详细的描述是:在记录的存储位置和它的

2014-03-12 00:20:35 16567 20

原创 【算法拾遗】阿里实习生电面题目:输出给定字符串的全部连续子串

今天下午阿里电面的题目,给定一个字符串,输出其所有连续子串,如:给定字符串为abcd,则要输出的其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd。 很快给出了最简单的方法,就是先从第一个字符遍历,向后输出,再从第二个字符开始遍历,向后输出,依此类推,直到开始遍历的字符为数组的最后一个字符。这个时间复杂度很高啊,要O(n*n*n)。 接下来就假设字符串很大,想优化的方法,不知道脑子是短路了还是咋地,居然联想到Trie树上去了,完全不沾边的东西。电面后想了下,感觉应该

2014-03-12 00:19:29 23929 172

原创 【数据结构与算法】内部排序总结(附各种排序算法源码)

这篇博文我们简要地总结下各种内部排序方法。 这10种排序算法中,前面7种属于建立在“比较”基础上的排序算法,通过决策树已经证明,任何基于比较进行的排序算法的时 间复杂度不可能再优于O(n*logn)。后面3种不是建立在比较的基础上的,因此,可以达到线性运行时间。 下面我们给出各种排序方法的时空复杂度的表格(属于自己总结,有不对的地方,希望大家指正或补充)。

2014-03-11 00:03:01 5987 5

转载 李开复:算法的力量

李开复:算法的力量算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实大家都被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的

2014-03-09 16:44:00 2956 4

原创 阿里实习生内推电面总结

本来没想投阿里的实习生内推,一是因为在杭州,离学校太远了,二来感觉自己现在火候还不到,毕竟很多学过的东东都忘了,还没怎么来得及回顾,项目方面的东西也没有系统地去梳理,很多地方也记不太清了。而且五月份毕业论文还要开题,现在是一边看文献,一边准备校招的东东,每天时间安排的满满的。 好吧,扯远了,推就推吧,试一下没啥损失,反正这个时候也没想过能拿到实习offer,自己还是有些自知之明的,就当长点见识吧。 3月6号晚上7点左右,草草地弄了下简历,发了过去,没想到当天晚上11点左右就收到短信和邮件,说

2014-03-09 07:52:40 15268 34

原创 【数据结构与算法】内部排序之五:计数排序、基数排序和桶排序(含完整源码)

最后三种排序算法了,由于都不是基于比较的排序,因此这三种排序算法可以以线性时间运行。但是因为限制条件的特殊性,因此应用面没有基于元素比较的排序算法广,但是在很多特定的情况下还是蛮有用途的,而且效率极高。 计数排序是建立在这样的前提条件下的:假设n个输入元素的每一个都是0到k区间内的一个整数,其中k为某个整数。因此我们后面所写的程序也只是针对0到k之间的元素进行排序,换句话说,排序元素中不能有负数。 计数排序的基本思想是:对一个输入元素x,先确定所有输入元素中小于x的元素个数,那么排序后x所在

2014-03-09 07:49:51 5917

原创 【操作系统笔记】动态存储管理

操作系统中常用来管理内存的动态分配和回收的方法有边界标识法和伙伴系统。 系统将所有的空闲块链接在一个双重循环链表结构的可利用空间表中。系统的特点在于:在每个内存区的头部和底部两个边界上分别设有标识,以标识该区域是占用块或空闲块,使得在回收用户释放的空闲块时易于判别在物理位置上与其相邻的内存区域是否为空闲块,以便将所有地址连续的空闲块组合成一个更大的可利用的空闲块。采用该方法时,内存分配很简单,采用首次拟合分配、最佳拟合分配、最差拟合分配均可。另外,为了避免修改指针,约定将该节点中的高地址部分分配

2014-03-08 08:40:52 3919

原创 【数据结构与算法】内部排序之四:归并排序和快速排序(含完整源码)

之所以把归并排序和快速排序放在一起探讨,很明显两者有一些相似之处:这两种排序算法都采用了分治的思想。下面来逐个分析其实现思想。归并排序 实现思想 归并的含义很明显就是将两个或者两个以上的有序表组合成一个新的有序表。归并排序中一般所用到的是2-路归并排序,即将含有n个元素的序列看成是n个有序的子序列,每个子序列的长度为1,而后两两合并,得到n/2个长度为2或1的有序子序列,再进行两两合并。。。直到最后由两个有序的子序列合并成为一个长度为n的有序序列。2-路归并的核心操作是将一维数

2014-03-06 00:02:05 9465 5

原创 【数据结构与算法】内部排序之三:堆排序(含完整源码)

堆排序、快速排序、归并排序(下篇会写这两种排序算法)的平均时间复杂度都为O(n*logn)。要弄清楚堆排序,就要先了解下二叉堆这种数据结构。本文不打算完全讲述二叉堆的所有操作,而是着重讲述堆排序中要用到的操作。比如我们建堆的时候可以采用堆的插入操作(将元素插入到适当的位置,使新的序列仍符合堆的定义)将元素一个一个地插入到堆中,但其实我们完全没必要这么做,我们有执行操作更少的方法,后面你会看到,我们基本上只用到了堆的删除操作,更具体地说,应该是删除堆的根节点后,将剩余元素继续调整为堆的操作。先来看二叉堆的定义

2014-03-04 00:01:45 27916 24

原创 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)

之所以把冒泡排序和选择排序放在一起,是因为二者的实现代码很相似,而且都是最基本的排序方式,非常容易理解和实现。当然,如果仅仅是为了讲述这两种排序方式,那也根本没必要写这篇博文了。和上篇博文一样,我会在冒泡排序和选择排序原始代码的基础上给出一些改进和优化,这才是本文的重点所在。 冒泡排序的思想很简单,如果要求排序后序列中元素按照从小到大的顺序排列,则冒泡排序的步骤如下: 1、依次比较序列中相邻的两个元素,将较大的放在后面,这样一趟比较后,最大的元素就放在了最后的一个位置; 2、再依次

2014-03-02 09:36:02 5967 12

字典树求公共前缀字符串数目

字典树求具有公共前缀的字符串数目, 对应的博客地址:http://blog.csdn.net/ns_code/article/details/21183495

2014-03-13

哈希表相关操作实现

哈希表相关操作实现。对应讲解的博客地址:http://blog.csdn.net/ns_code/article/details/20763801

2014-03-08

九大内部排序算法打包下载

源码包括:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序、计数排序、基数排序等,没有实现桶排序。 每一种排序算法在我的博客中都有对应的讲解.

2014-03-05

优化冒泡排序和选择排序

冒泡排序和选择排序均用两种方法实现,原始方法和在原始方法上的改进和优化,对应博客地址:http://blog.csdn.net/ns_code/article/details/20065107

2014-02-27

插入排序和希尔排序的多种实现方法

插入排序采用三种方法实现,希尔排序根据插入排序采用的方法不同,也有三种,但是又通过改进得到一种最为简介的实现方式。所有方法的实现在博客中:http://blog.csdn.net/ns_code/article/details/20043459中有详细的讲述

2014-02-27

模式匹配—BF算法和KMP算法

模式匹配—从BF算法优化到KMP算法,含有详细注释,对应的讲述该算法的博文地址:http://blog.csdn.net/ns_code/article/details/19286279

2014-02-19

两种遍历方法实现赫夫曼编码

对之前的代码做了些改进,并增加了一种无栈非递归求赫夫曼编码的方法。加入了更详细的注释。。

2014-02-15

赫夫曼树的构建及赫夫曼编码(C语言源代码,代码中含详细注释)

C语言实现赫夫曼树的构建及赫夫曼编码的源代码,配合我的CSDN博客:http://blog.csdn.net/ns_code/article/details/19174553中的讲解,帮助你掌握Huffman编码的算法实现

2014-02-15

百度2014校园招聘笔试题

百度2014校园招聘深圳站移动软件研发岗笔试题

2013-10-05

深入浅出mfc

侯捷的深入浅出mfc 简体中文版,很清晰

2012-11-29

Matlab 实例程序百例

很多实用的程序,可以拿来现用,或者稍作修改来用。很好,很实用。。。。。

2010-06-01

大学生职业生涯规划书

本人作品,可以作为模板,曾获校级十佳规划之星,并吧被推选为省级参赛作品,但因时间关系,最终放弃省赛。。

2010-06-01

简易洗衣机设计—基于Multism

实现了实验要求的全部功能,并提供了详细的论文和仿真电路图

2010-05-22

2009年全国大学生数学建模竞赛A题论文

本论文只含有论文内容,不含该题目的数据,数据可以自行在官网上下载

2010-05-22

兰亭风雨的留言板

发表于 2020-01-02 最后回复 2020-02-22

Java TCP/IP Socket网络编程系列

发表于 2013-12-22 最后回复 2016-09-01

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