前篇 替罪羊树真的好简单的说,还不需要记怎么旋转之类的。代码也短,才100多行就可以轻松实现 替罪羊树是一种平衡树,支持插入,删除,查找第k小元素,查找元素的排名等操作 替罪羊树就是一种暴力平衡树,旋转?不存在的! 替罪羊树 替罪羊树保持平衡的方法就是暴力重构,即当树不平衡时拍扁重新建树,那么如何才 ...
分类:
其他好文 时间:
2018-09-23 15:01:44
阅读次数:
176
传送门 解题思路 平衡树,支持插入,删除,找前驱后继,set水过。 #include<iostream> #include<cstdio> #include<cstring> #include<set> using namespace std; const int MAXN = 50005; inl ...
分类:
其他好文 时间:
2018-09-20 19:50:43
阅读次数:
168
题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 import java.util.*; /* public class L ...
分类:
其他好文 时间:
2018-09-20 01:08:27
阅读次数:
142
20172305 2018 2019 1 《Java软件结构与数据结构》第二周学习总结 教材学习内容总结 本周内容主要为书第三章和第四章的内容: 第三章(以数组来替代栈的作用) 集合(聚集,组织了其他对象的对象): 线性集合(直线方式组织的集合) 非线性集合(某种非直线方式组织的集合) 抽象数据类型 ...
分类:
编程语言 时间:
2018-09-18 22:42:21
阅读次数:
238
本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 思路 通常那样从头开始查找删除需要的时间为O(n),要在O(1)时间删除某结点,可以这样实现:设待删除结点i的下一个结 ...
分类:
编程语言 时间:
2018-09-18 17:23:36
阅读次数:
187
集合分为Collection和Map,详细分类如下图所示: 以下是测试验证代码: 总结: 基于array的集合适合查询,而基于linked(链表)的集合则适合添加和删除操作,基于哈希的集合介入二者之间。 * 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用L ...
分类:
其他好文 时间:
2018-09-17 19:47:59
阅读次数:
161
#include<stdio.h>#include<cstdlib> struct student //定义一个学生结点,结点包括值域和指针域{ int num;//学号 char name[20];//姓名 char address[20];//地址 struct student *next;// ...
分类:
其他好文 时间:
2018-09-15 19:17:44
阅读次数:
198
treap裸题... 还是要写一下,毕竟是第一个成功用treap维护的题,做个纪念吧 这题的中心思想其实很简单,就是插入+删除+查询排名为x的数 但是重点是,全体的标记怎么处理? 首先有一个很显然的思想,就是在修改全体的时候,我们不去修改全体的值,而是去修改界限 但这样做有一个很显然的问题:界限修改 ...
分类:
其他好文 时间:
2018-09-15 15:25:41
阅读次数:
142
基础: set是关联容器,set中每个元素的值都是唯一的,系统能够根据元素的值自动进行排序。set中数元素的值并不能直接被改变。STL中还有一些标准关联容器multiset、map 和 multimap 等,这些关联容器内部均是采用红黑树实现的。 set特点: ①、map和set的插入删除效率比其他 ...
分类:
其他好文 时间:
2018-09-15 12:21:49
阅读次数:
182
1-Java集合的特点 Collection接口:不唯一,无序 List接口:不唯一,有序 其中常用类:ArrayList、LinkedList ArrayList实现了长度可变的数组;遍历元素和随机访问元素的效率比较高 LinkedList采用链表存储方式。插入、删除元素时效率比较高 Set接口: ...
分类:
编程语言 时间:
2018-09-13 14:25:48
阅读次数:
140