java集合 java集合分类:(普通集合、同步集合、并发集合) 普通集合 Connection接口 List 有序,可重复 ArrayList 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程不安全,效率高 LinkedList 优点: 底层数据结构是双向链表,查询慢,增删快。 缺点: ...
分类:
编程语言 时间:
2019-10-29 21:33:06
阅读次数:
103
1.1.copy函数 通过copy函数可以把一个切片内容复制到另一个切片中 (1)把长切片拷贝到短切片中 package main import "fmt" func main() { s1 := []int {1,2} s2 := []int{3,4,5,6} //copy的是角标,不会增加元切片 ...
分类:
编程语言 时间:
2019-10-29 11:37:13
阅读次数:
126
原题(Medium): 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 思路:自底向上(bottom-to-up)、归并排序(Merge Sort) 题目对时间复杂度和空间复杂度做出了要求,常用的对数级别的排序方法不多,由于这里并不是双向链表,所以快排不太可能,可以使用归 ...
分类:
编程语言 时间:
2019-10-26 13:25:17
阅读次数:
99
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路 采用中序遍历遍历二叉树,利用二叉排序树的特性,顺次连接节点,形成双向链表。 C++代码实现 /* struct TreeNode { int val; struct ...
分类:
其他好文 时间:
2019-10-23 11:47:14
阅读次数:
83
较久以前学过数据结构,对链表的定义和行为结构有过了解,所以阅读源码学习stl定义的list容器的并不算吃力。 list与vector都是两个常用的容器,与vector不同,list不是连续线性空间的,list是一个双向链表。每次插入或者删除一个元素,将配置或者释放一个元素空间,因此,list对于空间 ...
分类:
其他好文 时间:
2019-10-20 16:10:15
阅读次数:
69
用一个哈希表和双向链表来实现。 哈希表记录节点是否存在,并计数 双向链表实现按优先级删除和添加。链表头为长时间未使用的低优先级,链表尾为最近使用的高优先级。 ...
分类:
系统相关 时间:
2019-10-17 23:33:27
阅读次数:
85
stl_list.h : list:一个可从任意位置快速插入和删除元素的双向链表,可在常数时间内完成,但是取数据、查找等则需要线性时间; _List_node_base:链表节点基类struct,仅包含_M_next、_M_prev成员,其分别为指向当前节点基类类型的下一个、上一个节点的指针; _L... ...
分类:
其他好文 时间:
2019-10-10 12:47:46
阅读次数:
68
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define sc scanf 4 #define pr printf 5 6 typedef struct LNode 7 { 8 int data; 9 struct LNode *prior ...
分类:
其他好文 时间:
2019-10-07 11:11:20
阅读次数:
60
倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生。这两个宏最初是极客写出的,后来在Linux内核中被推广使用。 1. offsetof 1.1 offsetof介绍 定义:offsetof在linux内核的include/lin ...
分类:
系统相关 时间:
2019-10-05 22:38:57
阅读次数:
103