摘要: 回溯算法的定义: 在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在 阅读全文
posted @ 2020-09-15 22:31 CofJus 阅读(1202) 评论(0) 推荐(0) 编辑
摘要: 1.结构 单链表和向量实现难度低,维护容易却查找效率低,AVL树、红黑树等高级数据结构效率高但较为复杂,难以维护。 SkipList的实现较红黑树简单得多,而且同时保证了查询和维护等操作平均仅需O(logn)时间。 不难看出,跳表的结构大致可以被描述为:带索引的有序的链表 底层的链表存储了所有数据, 阅读全文
posted @ 2020-09-02 23:10 CofJus 阅读(362) 评论(0) 推荐(0) 编辑
摘要: • 根节点枚举 ○ 为保证一致性,所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的。 ○ 现在可达性分析算法耗时最长的查找引用链的过程已经可以做到与用户线程一起并发,但根节点枚举始终还是必须在一个能保障一致性的快照中才得以进行。 ○ 虚拟机直接得到哪些地方存在着对象:使用一组称为OopMap的 阅读全文
posted @ 2020-08-17 15:42 CofJus 阅读(173) 评论(0) 推荐(0) 编辑
摘要: • 引用计数法:在Java领域,至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存,主要原因是,这个看似简单的算法有很多例外情况要考虑,必须要配合大量额外处理才能保证正确地工作,譬如单纯的引用计数就很难解决对象之间相互循环引用的问题。 • 可达性分析 ○ 通过一系列称为“GCRoots”的 阅读全文
posted @ 2020-08-03 15:03 CofJus 阅读(166) 评论(0) 推荐(0) 编辑
摘要: • 运行时数据区 • 程序计数器 ○ 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 ○ 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类 阅读全文
posted @ 2020-08-02 08:29 CofJus 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer中的动态规划除了一题hard(正则表达式匹配)都比较简单,要是面试只考到这种程度就好了... 连续子数组的最大和 这道题可以作为线性dp的模板。 用dp[i]表示以元素nums[i]为结尾的连续子数组最大和。 当以nums[i-1]为结尾的数组和(dp[i-1])大于0,对于以nums 阅读全文
posted @ 2020-07-31 21:35 CofJus 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1.并查集 赤裸裸的并查集,做这道题就是冲着并查集去的。 按秩求并+路径压缩,维护一个count表示不相交集合森林里树的棵数 class Solution { public: int *pre; int findCircleNum(vector<vector<int>>&M) { int 阅读全文
posted @ 2020-07-05 09:57 CofJus 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1470. 重新排列数组 时间O(N) 空间O(N) class Solution { public: vector<int> shuffle(vector<int>& nums, int n) { vector<int> res; int i=0; int j=n; for(i=0;i<n;++i 阅读全文
posted @ 2020-06-08 15:21 CofJus 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 并查集(Disjoint Sets),直译即不相交集。 等价关系 离散数学中对等价关系的定义:满足自反性、对称性和传递性的关系。 集合A,∀(a,b),a,b∈A,满足aRb,则称R为A上的关系,若R满足以上三种性质,则为等价关系。 数学上的定义不必过多解释,只需知道,等价关系是用来对集合中的元素分 阅读全文
posted @ 2020-06-01 20:06 CofJus 阅读(740) 评论(0) 推荐(1) 编辑
摘要: 5424. 数组中两元素的最大乘积 理解错误,无脑暴力了一发居然过了 class Solution { public: int maxProduct(vector<int>& nums) { int res=0; for(int i=0;i<nums.size()-1;++i) { for(int 阅读全文
posted @ 2020-05-31 17:24 CofJus 阅读(136) 评论(0) 推荐(0) 编辑