- 博客(12)
- 收藏
- 关注
原创 递归反转字符串
搞一个简单一点、但也挺有趣的题目:给定一字符串,利用递归的方法输出其反转字符串。首先,递归反转字符串,每条字符串的反转对象都等于其最后一个字符所形成的字符串对象拼接上最后一个字符串之前的所有字符所形成的反转对象。Java代码1public String reverseString(String str, int length) { if (length > 0) {
2016-04-30 16:55:02 1040
原创 并行处理海量数据实验
以前看到过一个题目,说设计算法,要求在10亿个数的数据流中找出最小的10个数。我想到有两种算法,第一种利用大根堆找出最小的10个数,第二种方法是第一种的改进,利用多线程实现并行计算,将计算任务分为若干个,之后再将结果进行合并。实验一思路:需要一个大根堆存储最终的结果,利用Random不断地产生随机数。大根堆初始化为容量为10、所有元素都为Integer.MAX_VA
2016-04-30 16:24:39 746
原创 Longest Consecutive Sequence
给定一个整形数组,求数组中最长的连续串的长度。如果数组是[5,7,9,1,1,2,3,3],结果为3。解题思路:1. 利用hashMap对数组每个元素进行散列。2. 对于数组的某个元素num1,在hashMap中向前、向后求其相邻的数是否在hashMap中,在的话长度加1,并把该元素删除3. 因为是向前向后两头求其相邻的元素,所以即使num1在中间也无所谓。Ja
2016-03-09 14:06:03 420
转载 DNS对域名的解析过程
先说一下DNS的几个基本概念:一. 根域就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。根域服务器我们知道有13台,但是这是错误的观点。根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借
2016-01-25 17:27:48 539
转载 MySQL索引背后的数据结构及算法原理
讲关于MySQL索引的一篇很好的文章,转载过来分享一下。原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型
2015-12-15 17:17:48 532
转载 Java中volatile关键字的含义
文章出处:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字
2015-12-04 15:40:25 412
原创 二叉树的右视图
题目大意:给定一颗二叉树,求该二叉树的右视图,即从右往左看,求能看到的二叉树的结点,比如[1,2,3]看到的是1,3。思路:1)这道题挺有意思,首先得明确,题目的隐含意思就是要求二叉树的每一层的最后一个结点(从左到右)。2)既然二叉树分层次,就需要利用层次遍历遍历二叉树。3)层次遍历二叉树的时候,最重要的内容是知道当前遍历的层哪个是最后一个结点。4) 设置变量记录当前层在遍历队
2015-11-30 19:17:34 3573
原创 判断是否为合法排序二叉树
题目大意:判断二叉树一个数是否为一颗排序二叉树。解题思路:方法有多种,可以先对二叉树进行中序遍历,然后检查得到的遍历结果是否是升序。不过这样做除了遍历二叉树需要的栈以外还需要一个数值来存储遍历结果以及在此遍历结点元素。有一种方法也是利用中序遍历的思想,用一个变量存储上一个结点的值,在每访问一个结点时,判断当前结点的值是否大于上一结点的值。如果成立,则继续遍历二叉树,如果不成立,则返回false
2015-11-18 17:29:41 1454
原创 排序数组构造AVL树
题目大意:假设排序数组中没有重复的元素,利用数组的元素构建一颗平衡二叉树。思路分析:如果直接构造一颗平衡二叉树,代码量会比较大,而且也不容易实现。注意题目的意思,是利用排序数组来构建平衡二叉树。所以,需要好好利用排序的特点。再来看看,一颗平衡二叉树最基本的要求是树种的结点均匀分布,我们可以利用二分查找来解决这个问题。1)取数组的中间位置的元素,作为根节点2)在中间位置元素的左边部分的中
2015-11-18 17:15:21 1693
原创 Rotate List(链表旋转)
这是一道来自Leetcode的题目,如下所示。其中,K可以大于链表的长度,如果大于链表的长度,则旋转的大小就是 size % K。思路:1)遍历链表,求出链表长度size,并得到指向链表末尾结点的指针end;2)设置两个指针pHead和pEnd,一前一后。根据K的大小,pEnd往前走K+1步。之后,两个指针同步移动,直到pEnd==NULL;3)此时,pHead的下一个结点就是
2015-11-02 22:47:30 594
原创 二叉树的深度
求二叉树深度是一个基本的算法,解决的思路如下:1. 根据二叉树的非递归遍历,设置两个记录变量“观察”栈的深度变化:real_depth是栈真正的深度,cur_depth是当前栈的深度。对每个节点进行遍历,如果cur_depth大于real_depth则更新real_depth。2. 利用递归求解。树的深度为其左右子树中较大者的深度加1。思想很好理解,代码也简单。以下代码为递归求解:
2015-11-02 17:43:55 418
原创 Median of Two Sorted Arrays
题目要求是求出两个已排序的数组的中位数,如果两个数组的总的个数为偶数,则返回中间两个数字的平均数。思路:解题思路就是根据归并排序的思想,利用归并排序中合并两个已排序数组的方法。声明count变量,在两个数组中没选出一个数的时候,count++,直到count等于中位数所在的位置即可。以下是代码过程:1. 极端情况,两个数字都为空,返回-1;2. 根据两个数组的size()确定中位数
2015-10-31 16:00:28 578
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人