摘要:
JAVA不像C++有next_permutation函数可以方便实现全排列,因此需要自己实现。 函数perm用于实现数组中由下标p到下标q之间元素的全排列。为了便于理解我们举例 nums为 1 2 3 4,对于这四个数字我们可以分为四类 第一类为以1作为头部后面剩余的数字进行全排列,第二类以2作为头 阅读全文
摘要:
1. wdCP安装和建站教程 https://bbs.aliyun.com/read/146205.html 2.解决Ubuntu安装WDCP报错 lanmp.sh: 45: lib/common.conf: function: not found lanmp.sh: 67: lib/common. 阅读全文
摘要:
一、题目 一个公司的上下节关系是一棵多叉树,这个公司要举办晚会,你作为组织者已经摸清了大家的心理:一个员工的直 接上级如果到场,这个员工肯定不会来。每个员工都有一个活跃度的值,决定谁来你会给这个员工发邀请函,怎么 让舞会的气氛最活跃?返回最大的活跃值。 举例: 给定一个矩阵来表述这种关系 matri 阅读全文
摘要:
一、题目 二叉树中,一个节点可以往上走和往下走,那么从节点A总能走到节点B。 节点A走到节点B的距离为:A走到B最短路径上的节点个数。 求一颗二叉树上的最远距离 二、思路 利用递归分别求出每个节点的左右子树中的最大距离,和该节点的高度。 三、代码实现 阅读全文
摘要:
一、算法介绍 Morris算法充分利用了二叉树叶子节点下的空间,从而可以在时间复杂度为O(N),空间复杂度为O(1)的条件下,前中后序遍历二叉树(不是完全二叉树也可以使用)。 而常见的遍历二叉树的方法为递归和栈迭代,这两种方法的时间复杂度虽然也为O(N),但是空间复杂度需要O(N),因此Morris 阅读全文
摘要:
零、预备知识 Manacher用于在一个字符串中找到最长的回文子串。 回文串:正着念和反着念一样,例如aabbaa,anna等。 注意子串与子序列的区别: 子串必须是在原字符中可以找到的。比如 " I am a student"。am是子串(当然也是子序列),但是aa就不是子串了(是子序列)。 一、 阅读全文
摘要:
一、算法来历 BFPRT算法由五位大佬(Blum 、Floyd 、 Pratt 、Rivest arjan)提出,并由其五人的首字母命名也称五个好朋友算法。用于在n个数中取得第k小的数或第k大的数。 二、算法主要思路 假设BFPRT算法函数为 int BFPRT(int[ ] arr,int k), 阅读全文
摘要:
一、模式定义 单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。 二、分类 (1)懒汉式:延迟加载方式。 (2)饿汉式 :加载时就new出对象,线程安全,没有延时加载的优势。 三、代码实现 1.饿汉式单例(立即加载,线程安全) 2.懒汉式单例(延迟加载,使用sync 阅读全文
摘要:
一、模式定义 所谓原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 能够克隆的类需要实现Cloneable接口,且提供clone()接口。 当通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 其中克隆又分为: 深克隆: 1.普通实现 2.利用序 阅读全文
摘要:
首先介绍下与非本地跳转的对应的本地跳转,本地跳转指的是类似于goto语句的一系列应用,当设置了标志之后,可以跳到所在函数内部的标号上。然而,本地跳转不能将控制权转移到所在程序的任意地点,不能跨越函数,因此也就有了非本地跳转。 1.非本地跳转是C语言提供的一种用户级的异常控制流的形式,它将控制直接从一 阅读全文