自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(238)
  • 资源 (13)
  • 收藏
  • 关注

原创 【剑指offer】员工年龄排序

对公司所有员工的年龄进行排序,公司总共有几万名员工,要求时间复杂度为O(n)。 很明显的计数排序题目,员工的年龄肯定在一个范围之内,我们这里假设在0-99之内,算很大了,这样就可以开辟一个长度为100的数组,保存各个年龄的员工的个数。

2014-05-07 12:21:12 4891 3

原创 【剑指offer】两个队列实现一个栈

转载请注明出处:    题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。    思路:稍微画下草图,便不难想出该题的解决方法,思路如下:    假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶

2014-05-06 09:04:50 9179 2

原创 【剑指offer】两个栈实现一个队列

剑指offer上的第七题,之前在Cracking the Coding interview上做过该题,这次把原来的程序搬了过来,并根据九度OJ的测试系统写了测试代码,在九度OJ上AC。时间限制:1 秒内存限制:128 兆题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:每个输入文件包含一个测试样例。对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。接下来的n行,每行输入一个队列操作:1. PUSH X 向队列

2014-05-05 17:49:55 2820

原创 【剑指offer】重构二叉树

时间限制:1 秒 内存限制:32 兆题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点

2014-05-05 16:03:25 3900

原创 【剑指offer】从尾到头打印单链表

题目描述:输入一个链表,从尾到头打印链表每个节点的值。输入:每个输入文件仅包含一组测试样例。每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。输出:对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

2014-05-05 10:08:13 4040

原创 【剑指offer】替换字符串中的空格

剑指offer上的第二道题目,在九度OJ上测试通过,但还是有些问题,因为是用C语言实现的,因此,要提前开辟一个比较大的空间来存储输入的字符串。而如果在线测试系统的测试用例中字符串的长度大于该最大值的话,会报RE,但是九度OJ的测试用例没有大于我所设定的字符串的最大值。当然,这道题目用C++中的string类或java中的String类实现会更好,不需要担心输入字符串的长度。

2014-05-05 08:27:20 4182 2

原创 【剑指offer】二分查找二维数组

剑指offer上的第一道题目,在九度OJ上测试通过题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数。输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字。接下来的m行,每行有n个数,代表题目所给出的m行n列的矩

2014-05-04 14:23:35 6487

原创 【剑指offer】和为定值的两个数

题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 思路: 最直接的做法是暴力法,两个for循环,时间复杂度为O(n*n),但是这样没有充分利用升序数组这一前提。我们假设数组为A,长度为len,给定的和为sum,最好的方法是先用数组的第一个数A[lo

2014-05-04 08:37:40 7163 3

原创 【CareerCup】Trees and Graphs—Q4.3

题目: Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height. 翻译: 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。 思路: 要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。

2014-04-30 07:57:17 2831

原创 无论发生什么,生活总还要继续

无论发生什么,生活总还要继续。。。。。。

2014-04-16 01:34:45 6488 17

原创 【CareerCup】Trees and Graphs—Q4.2

题目: Given a directed graph, design an algorithm to find out whether there is a route between two nodes. 翻译: 给定一个有向图,设计算法判断两结点间是否存在路径。 思路: 考察图的遍历,如果遍历路径上经过该顶点,则存在路径,不经过则不存在路径,在遍历算法上做一些改进即可。我们这里用图的DFS来改进。并采用图的BFS和DFS一文中的有向图来作测试,并采用邻接

2014-04-09 08:33:07 3480

原创 【CareerCup】Trees and Graphs—Q4.1

转载请注明出处:http://blog.csdn.net/ns_code/article/details/22756167    题目:    Implement a function to check if a tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree

2014-04-02 00:03:13 2795

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

转载请注明出处:http://blog.csdn.net/ns_code/article/details/22518359博客配置    原文:    Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented.

2014-04-01 08:38:57 2447

原创 【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 2282

原创 【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 2704

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

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

2014-03-29 08:31:50 2686

原创 【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 2811

原创 【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 2688 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 2713 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 2674

原创 【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 2653 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 2456 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 2685

原创 【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 2480

原创 【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 2846 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 3363 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 3259

原创 【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 3154

原创 【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 3787 1

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

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

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

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

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

2014-03-14 00:01:15 9591 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 36552 27

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

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

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

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

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

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

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

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

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

转载 李开复:算法的力量

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

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

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

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

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

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

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

2014-03-09 07:49:51 6369 1

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

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

2014-03-08 08:40:52 4613

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

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

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

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

字典树求具有公共前缀的字符串数目, 对应的博客地址: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

Matlab 实例程序百例

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

2010-06-01

大学生职业生涯规划书

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

2010-06-01

简易洗衣机设计—基于Multism

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

2010-05-22

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

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

2010-05-22

空空如也

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

TA关注的人

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