2016-08-08 ruki
TBOX中提供了各种列表操作: list: 元素在内部维护的双向链表 list_entry: 元素在外部维护的双向链表 single_list: 元素在内部维护的单向链表 single_list_entry: 元素在外部维护的单向链表 由于双链和单链的接口使用类似,这里主要就讲解双链的具体使用。 那什么是内部维护和外部维护呢? 简单地说: 外部维护:就是链表容器本身不存储元素,不开辟内存空间,仅仅是一个节点头,这样比较节省内存,更加灵活。(尤其是在多个链表间元素迁移的时候,或者多个链表需要统一内存池维护的时候)。 内部维护:就是链表容器本身回去开辟一块空间,去单独存储元素内 继续阅读 »
2016-09-17 craneyuan
题目描述 给定一个已排序的单链表,去除单链表中的重复元素,只保留一个重复的元素,并且返回新的单链表。 例如: 给出1->1->2,你的函数调用之后必须返回1->2。 输入 一个已排序的单链表,例如1->1->2。 输出 返回1->2。 代码示例 ``` java /** 单链表定义 * * @author: crane-yuan * @date: 2016-9-17 下午12:11:13 */ public class ListNode { public int val; public ListNode next; public ListNode(int x) { val = x; 继续阅读 »
2016-10-12 craneyuan
基本问题 如何删除单链表中的倒数第n个节点? 常规解法 先遍历一遍单链表,计算出单链表的长度,然后,从单链表头部删除指定的节点。 more 代码实现 ``` java /** 删除单链表倒数第n个节点,常规解法. * * @param head * @param n * @return ListNode */ public static ListNode removeNthFromEnd(ListNode head, int n) { if(head == null) { return null ; } //get length of list ListNode p 继续阅读 »
2016-10-10 craneyuan
基本问题 如何将单链表反转? 单链表结构定义 ``` java /** 单链表定义 * * @author: crane-yuan * @date: 2016-9-17 下午12:11:13 */ public class ListNode { public int val; public ListNode next; public ListNode(int x) { val = x; } } ``` more 算法实现 java /** 单链表反转 * * @param head * @return ListNode */ public static ListNode rever 继续阅读 »
2017-08-05 张炎泼
mdtoc start hash表中key的分布规律 当hash表中key和bucket数量一样时(n/b=1): key的数量对3类bucket数量的影响 key的数量对bucket的均匀程度的影响 Load Factor: n/b<0.75 Load Factor: n/b>1 n/b 越大, key的分布越均匀. 计算 每类bucket的数量 空bucket 数量 有1个key的bucket的数量 多个key的bucket key在bucket中分布的均匀程度 通过~~正太~~正态分布来近似 计算最小key数量 x 程序模拟 Reference 继续阅读 »
2019-01-06 Vaniot
redis https://github.com/antirez/redis/blob/5.0/src/adlist.h https://github.com/antirez/redis/blob/5.0/src/adlist.c 结构体的定义 结构体的实现,双向链表的相关定义于adlist.h中 节点: ```C++ typedef struct listNode { struct listNode *prev; //前一个节点 struct listNode *next; //后一个节点 void *value; //节点的值 } listNode; more 迭代器: C++ typedef s 继续阅读 »
2014-04-19 veryyoung
这是唯品会实习生招聘的压轴题 首先吐槽下vip.com ,暑期实习生一共才招21人!太少了吧! 笔试现场各种乱,Java,Android,Tester,PHP,IOS甚至还有管培,产品经理这些,全坐一起,...人挨人的 笔试题更坑爹啊!前面选择题,都是Java语法题,感觉没多大含金量。 大题更坑啊!操作系统,网络,组成原理,算法各一题 其中前三者,都是考死知识,神马解释操作系统进程通信方式,解释段页式管理,解释TCP和UDP 最后的算法题还算不错! 题目是:O(1)时间内删除单链表节点 拿到这道题的第一想法是,我擦!你TMD逗我呢!这TMD也可能实现?! 寻思一番之后,突然发现,卧槽!这真的可以实现啊! 好吧,开始进入 继续阅读 »
2014-01-14 W.Y.
算法原理 设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 n 的有序序列。 具体算法描述如下: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置 5. 将新元素插入到该位置后 6. 重 继续阅读 »
2015-04-09 安兴乐-siler
向表中插入数据 insert [into] 表名[(列名1,列名2....)] values (值1,值2...); eg: 给samp_db数据库中的student表插入一条记录: insert into student values(NULL,"王刚","男"...); 或者: insert into student(name,sex,age) values ("安兴乐","男"...) 查询表中数据 select 列名称 from 表名称 [查询条件] select name,age from student; 也可使用通配符 * select * from student; 更新表中数据 update 表名称 se 继续阅读 »
2013-11-21 veryyoung
【数据结构类】实现一个对链表排序的算法,C`C++可以使用std∶∶list Java使用LinkedList 要求先描述算法,然后再实现,算法效率尽可能高效。 基本思想: 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法过程 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小 继续阅读 »