文章分类 -  Algorithm

上一页 1 2
二叉树系列——二叉树的最大距离
摘要:题目:如果我们把二叉树看做图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 如下图所示,树中相距最远的两个节点为A,B,最大距离为6。 情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。 情况B 阅读全文
posted @ 2019-09-16 20:46 溪水静幽 阅读(191) 评论(0) 推荐(0)
链表逆序打印
摘要:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 测试数据: 1、一个链表多个节点或者一个节点 2、链表为null 方法一:采用栈,先进后出的策略 /** * public class ListNode { * int val; * ListNode next = null; * * 阅读全文
posted @ 2019-01-26 11:35 溪水静幽 阅读(93) 评论(0) 推荐(0)
替换空格
摘要:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 /** 通不过的代码,当happy后有多个空格,split没有产生拆分 **/ public class Solution { public 阅读全文
posted @ 2019-01-20 12:21 溪水静幽 阅读(94) 评论(0) 推荐(0)
二维数组中查找
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 测试用例: 1、二维数组中包含查找的数,不包含查找的数,查找的数为最大值或最小值 2、输入测试的 阅读全文
posted @ 2019-01-12 12:20 溪水静幽 阅读(66) 评论(0) 推荐(0)
字符串转换成整数
摘要:题目描述 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。 以"123"作为例子: 当我们扫描到字符串的第一个字符'1'时,由 阅读全文
posted @ 2018-12-09 10:08 溪水静幽 阅读(1144) 评论(0) 推荐(0)
常用排序算法总结
摘要:常见比较排序算法的性能: 排序算法稳定性的简单形式化定义为:如果Ai = Aj,排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的。通俗地讲就是保证排序前后两个相等的数的相对顺序不变。 对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法 阅读全文
posted @ 2018-11-12 12:04 溪水静幽 阅读(132) 评论(0) 推荐(0)
折半查找
摘要:二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构 二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。 注意:代码中的判断条件必须是while (left <= 阅读全文
posted @ 2018-11-11 19:17 溪水静幽 阅读(301) 评论(0) 推荐(0)
大数据处理
摘要:1、给定a、b两个文件,各存放50亿个url,每个url占64字节,内存数量是4G,找出a、b文件相同的url? 假如每个url大小为10bytes,那么可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,所以不可能将其完全加载到内存中处理,可以采用分治的思想来解决。 Step1 阅读全文
posted @ 2018-10-31 23:00 溪水静幽 阅读(146) 评论(0) 推荐(0)
B-树 、B+树
摘要:B树(B-tree)是一种树状数据结构,能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。B-树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而 阅读全文
posted @ 2018-10-20 22:23 溪水静幽 阅读(190) 评论(0) 推荐(0)
红黑树原理
摘要:为了能以较快的时间 O(logN) 来搜索一棵树,需要保证树总是平衡的(或者至少大部分是平衡的),这就是说对树中的每个节点在它左边的后代数目和在它右边的后代数目应该大致相等。红-黑树的就是这样的一棵平衡树。 1. 红-黑树的特征 主要有两个特征: 1.节点都有颜色;2.在插入和删除的过程中,要遵循保 阅读全文
posted @ 2018-10-16 17:43 溪水静幽 阅读(184) 评论(0) 推荐(0)
堆栈的压入顺序
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的 阅读全文
posted @ 2018-08-27 23:01 溪水静幽 阅读(497) 评论(0) 推荐(0)
二叉搜索树的后序序列
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树结点的值,它们都比根结点的值小;第二部分是右子树结点的值, 阅读全文
posted @ 2018-08-13 23:08 溪水静幽 阅读(119) 评论(0) 推荐(0)
二叉树中和为某一值的路径
摘要:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 注意:非叶子节点也要进行弹出 1 import java.util.*; 2 /** 3 pub 阅读全文
posted @ 2018-08-06 22:57 溪水静幽 阅读(79) 评论(0) 推荐(0)
复杂链表的复制
摘要:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) O(n2)算法: 第一步是复制原始链表上的每一个结点,并用Next节点链接起来; 第 阅读全文
posted @ 2018-08-05 22:40 溪水静幽 阅读(107) 评论(0) 推荐(0)
二叉搜索树向链表转换
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 (本质就是二叉树的中序遍历算法) /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode rig 阅读全文
posted @ 2018-08-05 20:32 溪水静幽 阅读(104) 评论(0) 推荐(0)
Heap Sort
摘要:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面 公式来描述一下堆的定义就是: 大顶堆:arr[i] >= arr[2i+1] && 阅读全文
posted @ 2018-07-28 22:43 溪水静幽 阅读(100) 评论(0) 推荐(0)

上一页 1 2