剑指offer
文章平均质量分 56
阿祥仔
微信搜索Java猿社区,欢迎加入,一起努力,一起成长!
展开
-
剑指offer之快速排序
快速排序欢迎关注作者博客简书传送门 今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想 快速排序采用的思想是分治思想。 快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后...原创 2018-11-01 20:59:18 · 2899 阅读 · 0 评论 -
剑指offer之找出数组中出现次数超过一半的数字
找出数组中出现次数超过一半的数字欢迎关注作者简书csdn传送门题目 一个数组中有一个数字的次数超过了数组的一半,求出这个字符。如:int a[] = {2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2分析解法一 数组中有一个数字出现的次数超过了数组长度的一半,如果把数组排序,排序之后位于数组中间的数字一定是出现次数超过数组长度一半的数字。排序算法可以使用s...原创 2018-11-24 21:43:27 · 969 阅读 · 0 评论 -
剑指offer之复杂链表的复制
剑指offer之复杂链表的复制欢迎关注作者博客简书传送门题目 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。 在复杂链表中,每个结点除了有一个pNext指针指向下一个结点之外,还有一个pSibling指向链表中的任意结点或者NULL。 结点的定义如下:public static class Comple...原创 2018-11-17 20:34:56 · 454 阅读 · 0 评论 -
剑指offer之二叉搜索树的后序遍历序列
剑指offer之二叉搜索树的后序遍历序列欢迎关注作者博客简书传送门题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉树三种遍历方式先序遍历先序遍历先从二叉树的根开始,然后到左子树,再到右子树中序遍历中序遍历先从左子树开始,然后到根,再到右子树后序遍历后序遍历先从左子树开始,然后到...原创 2018-11-19 21:45:49 · 400 阅读 · 0 评论 -
HashMap实现原理分析及简单实现一个HashMap
HashMap实现原理分析及简单实现一个HashMap欢迎关注作者博客简书传送门 HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashMap和Hashtable之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实...转载 2018-11-21 23:46:53 · 696 阅读 · 0 评论 -
剑指offer之数组最短路径规划
剑指offer之数组最短路径规划欢迎关注作者博客简书传送门题目 寻找一条从左上角(arr[0][0])到右下角(arr[m-1][n-1])的路线,使得沿途经过的数组中的整数和最小。思路递归法 倒着来分析:最后一步到达arr[m-1][n-1]只有两条路,即通往arr[m-2][n-1]到达或者通往arr[m-1][n-2]到达,最后一步选择的路线为min{f(m-2,n-1),...原创 2018-11-18 23:07:22 · 849 阅读 · 0 评论 -
剑指offer之二叉搜索树的后序遍历序列
剑指offer之二叉搜索树的后序遍历序列欢迎关注作者博客简书传送门题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉树三种遍历方式先序遍历先序遍历先从二叉树的根开始,然后到左子树,再到右子树中序遍历中序遍历先从左子树开始,然后到根,再到右子树后序遍历后序遍历先从左子树开始,然后到...原创 2018-11-15 20:25:43 · 566 阅读 · 0 评论 -
剑指offer之旋转数组的最小数字
剑指offer之旋转数组的最小数字欢迎关注作者博客简书传送门题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 如果直接遍历数组,时间复杂度为O(...原创 2018-11-08 21:24:14 · 1036 阅读 · 0 评论 -
剑指offer之二叉树的镜像
二叉树的镜像欢迎关注作者博客简书传送门题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。思路 树的镜像不是我们所熟知的内容,通常在课本上所熟悉的就是树的遍历等基本的操作。但是我们可以通过图像来把镜像的过程给描述出来。比如像下面的两个二叉树就是互为镜像 下面我们来分析,镜像发生的过程是怎么样的。 这两个树根结点都是1,那么先交换根结点的左右结点,得到图2。交换后,我...原创 2018-11-11 22:15:49 · 1016 阅读 · 0 评论 -
剑指offer之树的子结构
树的子结构欢迎关注作者博客简书传送门题目 输入两颗二叉树A和B,判断B是不是A的子结构思想 要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和B的根结点的值一样的结点N,第二步再判断树A中以N为根结点的子树是不是包括和树B一样的结构。 第一步在树A中查找与根结点的值一样的结点。这实际上就是树的遍历。 第二步判断以树A中以N为根结点的子树是不是和...原创 2018-11-10 13:26:16 · 982 阅读 · 0 评论 -
剑指offer之冒泡排序
冒泡排序欢迎关注作者博客简书传送门 冒泡排序(Bubble Sort),它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,所以叫“冒泡排序”。原理 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比...原创 2018-11-02 22:52:15 · 1995 阅读 · 0 评论 -
剑指offer之合并两个排序的列表
合并两个排序的列表欢迎关注作者博客简书传送门题目 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的,并返回合并后的头结点。思路 假如List1中的头节点是小于List2中的,那么新的链表的头节点必将是List1的头节点,同理对List2也一样,那么在比较完头节点之后,再将List1中的下一个节点再与List2中的头节点比较,同样谁小谁进入新链表,然后再比...原创 2018-11-09 21:57:27 · 1046 阅读 · 0 评论 -
剑指offer之数值的整数次方
数值的整数次方欢迎关注作者博客简书传送门/** * @program: * @description: 数值的整数次方 * @author: zhouzhixiang * @create: 2018-10-31 20:48 */public class Pow { public static void main(String[] args) throws Excepti...原创 2018-11-03 21:49:17 · 1131 阅读 · 0 评论 -
剑指offer之Fibonacci青蛙跳台阶
Fibonacci青蛙跳台阶欢迎关注作者博客简书传送门/** * @program: * @description: * @author: zhouzhixiang * @create: 2018-10-31 19:38 */public class Fibonacci { public static void main(String[] args) throws Ex...原创 2018-11-01 21:07:41 · 1876 阅读 · 0 评论 -
剑指offer之给定链表的头指针和一个结点指针,在O(1)时间删除该结点
给定链表的头指针和一个结点指针,在O(1)时间删除该结点欢迎关注作者博客简书传送门函数的声明如下:void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);分析: 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。 在链表中删除一个结点,...原创 2018-11-01 21:05:13 · 3498 阅读 · 0 评论 -
剑指offer之连续子数组的最大和
剑指offer之连续子数组的最大和欢迎关注作者博客简书传送门题目 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。欢迎关注作者简书csdn传送门例子说明: 例如输入的数组为{1, -2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2}。因此输出为...原创 2018-12-01 22:15:07 · 455 阅读 · 0 评论