01 2022 档案
摘要:22.1.30 位运算 1.资源限制类题目的技巧: 1))哈希函数可以把数据按照种类均匀分流; 2)布隆过滤器用于集合的建立与查询,并可以节省大量空间; 3)一致性哈希解决数据服务器的负载管理问题; 4)利用并查集结构做岛问题的并行计算; 5)位图解决某一范围上数字的出现情况,并可以节省大量空间;
阅读全文
摘要:22.1.26 递归改动态规划 1.套路: 1)递归:根据题目写出递归版本; 2)记忆化搜索:用某种结构存储已经计算过的信息,省去重复计算的过程; 3)严格表结构:将递归套路转化为填表,注意考虑越界问题; 严格表结构的构造过程: 分析可变参数的范围(有几个可变参数就是几维表结构); 标出待求的终止位
阅读全文
摘要:22.1.23Manacher算法、双端队列、单调栈 1.Manacher算法 1)用途: Manacher算法用于解决类似求某个字符串中最长的回文子串。(回文就是正着读和倒着读一样的结构)。 2)算法中的关键变量: 回文半径 r:回文直径的一半; 回文直径 d:整个回文的长度; 之前扩大的所有位置
阅读全文
摘要:22.1.22 并查集和KMP算法 1.并查集结构 1)实现: 并查集有多种实现方式,例如向上指的图的方式,数组的方式等等。其根本思想就在于准确记录某个节点的根节点,这个这种记录就能够很快的实现并查集的两种主要的功能:合并和查询。 2)两种优化方法: 压缩路径; 在合并时将深度小的树合并到深度大的树
阅读全文
摘要:22.1.21 与哈希函数有关的结构 1 Hash函数的性质: out = f(in),其中in是无穷尽的,out是有穷尽的; 相同的输入经历Hash函数后能够得到相同的输出; 在很小的几率下,不同的输入也能得到相同的输出,概率很低; out具有均匀性和离散性。 2 哈希表 1)经典的哈希表可以看作
阅读全文
摘要:22.1.20. 暴力递归 1.关键 暴力递归的关键在于找到一种决策,即一种试的方法(例如从左到右依次试或者按某个影响问题的因素来试),寻找决策的原则应按照可变参数形式简单(尽量不用栈,队列等形式的可变参数,数量少的原则进行。 2.例子 1)汉诺塔问题(三根柱子分别命名为Left,Mid,Right
阅读全文
摘要:22.1.18 前缀树,贪心算法,暴力递归,堆 1.前缀树 简介: Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比
阅读全文
摘要:22.1.13 图 1.图的表示方法 常见的有邻接表法,邻接矩阵,数组表示的方法 数组表示的方法: 例如:一个二维数组为{{1,2,3},{2,4,2},{4,5,1},{2,3,4}},他表示从第一个节点到第二个节点之间有一条长度为3的路,第二个节点到第四个节点之间有一条长度为2的路.......
阅读全文
摘要:22.1.10 二叉树 1. 递归序遍历(系统自动压栈) (1)先序遍历:(根左右) code: public static void preOrder(TreeNode tree) { if (tree == null) return; System.out.printf(tree.val + "
阅读全文
摘要:22.1.9 链表 1. 哈希表 1)哈希表在使用层面上可以理解为一种集合结构 2)如果只有key,没有伴随数据value,可以使用HashSet结构(C++中叫UnOrderedSet) 3)如果既有key,又有伴随数据value,可以使用HashMap结构(C++中叫UnOrderedMap)
阅读全文
摘要:22.1.8 堆排序、桶排序 1. 堆排序:时间复杂度:O(nlogn), 空间复杂度:O(1) (1)完全二叉树: 第i个节点的左孩子:2*i+1; 第i个节点的右孩子:2*i+2; 第i个节点的父节点:(i-1)/2; (2)大根堆:以节点i为根节点的子树中,节点i上的值是这棵子树中最大的。 (
阅读全文
摘要:22.1.7 master公式及O(NLogN)的排序 1 master 公式 (1) 写公式 T(N) = a * T(N/b) + O(N^d); master公式用来求递归行为的时间复杂度,式中T(N/b)表示母问题被分解为子问题的规模,a表示子问题被调用的次数,O(N^d)表示算法中其他过程
阅读全文
摘要:2022.1.6 时间复杂度及简单排序算法 1. 时间复杂度 定义:在常数操作数量的表达式中,除去低阶项和高阶项的系数所剩下来的东西,记作O(剩下),读作 big O(剩下),时间复杂度按照算法执行的最差情况估计; 评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的* 实际运行
阅读全文
摘要:12.19 file与io流 File 1. 新建文件或者文件夹 新建文件 File F = new File(pathname:"路径+文件名");Boolean flag = F.creatNewFile();//如果文件不存在就创建,存在就创建失败。 新建一级文件夹 File F = new
阅读全文
摘要:恢复内容开始 12.16JAVA swing 1.框架 JFrame>JPanel>组件JButton JTestfilled JTable 2. JScrollPane 带滚动条的面板,只能添加一个组件 添加多个组件:先将需要添加的组件放到Jpanel中,再将JPanel放到JScrollPane
阅读全文
摘要:12.11exception 1.类别 检查性异常:用户错误或者问题引起的异常,此类异常程序员无法预见。例如:打开一个不存在的文件,用户输入错误(在只能输数字的地方输入汉字)...... 运行时异常:可能被程序员避免的异常。 错误:脱离程序员的控制,例如栈溢出等等。 2.异常的体系结构 3.异常处理
阅读全文
摘要:Super super的注意事项 super可以用来在子类中访问父类的public属性或方法,super只能出现在子类中。 super()调用的是父类的默认无参构造,super(参数)可以调用父类的有参构造,在一个类中写了有参构造无参构造自动失效 super调用父类的构造方法必须是第一个构造方法,即
阅读全文
摘要:12.9 Override 静态方法 父类的引用可以指向子类静态方法(用static修饰的方法)的调用只和左边定义的数据类型有关,如: public class Person { public static void Saying() { System.out.println("person说了一句
阅读全文
摘要:数组 定义一个数组 类型[] 数组名 = 初始化 内存分析 声明是声明在栈区 堆区储存new出来的对象 初始化 静态初始化 (不进行初始化每个int型数组中的元素默认初始化为0,char 为\u0000 空格的Unicode码,String型为null,boolean 为false,float do
阅读全文
摘要:Markdown学习 标题: n个#号 字体 粗体:要加粗的字两边加两个** 如 ** 粗体** 斜体:两边一个*号 斜体加粗: 两边三个*号 删除线:两边两个波浪号 引用 github 左边一个大于号加空格 如 > github 分割线 左边三个 或三个* 图片插入 超链接 文字 点一下可以查看格
阅读全文
摘要:可变参数 1.在方法声明中,在指定参数类型的后面加一个省略号 2.一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,普通参数必须在可变参数的前面。 #### 3.代码: public class test {public static void test(double...number
阅读全文