上一篇讲到了MongoDB的基本操作增删查改,对于查询来说,必须按照我们的查询要求去集合中,并将查找到的结果返回,在这个过程中其实是对整个集合中每个文档进行了扫描,如果满足我们的要求就添加到结果集中最后返回。对于小集合来说,这个过程没什么,但是集合中数据很大的时候,进行表扫描是一个非常恐怖的事情,于是有了索引一说,索引是用来加速查询的,相当于书籍的目录,有了目录可以很精准的定位要查找内容的位置,从...
分类:
数据库 时间:
2014-06-25 19:45:36
阅读次数:
279
相对于数组来说: 优点: 通过索引(数组下标)快地访问数组元素; 缺点: 插入/删除元素需要对数组进行调整, 效率低;而链表: 优点:插入/删除速度快而且用对整链表进行调整; 缺点:只能进行顺序访问能随机访问(像数组样用下标);所链表些需要快速插入/删除而太关心或者需要随机访问情况下使用.u...
分类:
其他好文 时间:
2014-06-25 09:08:38
阅读次数:
249
Sort a linked list using insertion sort.
仍然是一个非常简洁的题目,让我们用插入排序给链表排序;这里说到插入排序,可以来回顾一下, 最基本的入门排序算法,就是插入排序了;时间复杂度为n^2,最基本的插入排序是基于数组实现的,下面给出基于数组实现的插入排序,来体会一个插入排序的思想;
以下仅为数组实现,不是解题代码,没兴趣可以跳过。
vo...
分类:
其他好文 时间:
2014-06-24 23:56:31
阅读次数:
359
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}, reorder it t...
分类:
其他好文 时间:
2014-06-24 21:55:30
阅读次数:
279
常规的删除单链表结点的做法是挨个查找到该结点的前一个结点,然后去掉要删除的这个结点,回收内存。这个需要O(n)的时间。有一种比较快速的删除掉链表指定一个节点的方法,就是把下一个结点的内容复制到当前这个结点,然后把下一次结点删除掉,这个需要考虑当要删除的结点是最后一个结点的情况。如果刚好是最后一个结点...
分类:
其他好文 时间:
2014-06-23 08:09:32
阅读次数:
275
输入:一个无序的单链表的头结点输出:一个有序的单链表的头结点(这里假设是升序排序)分析:1. 插入排序的基本思想:将一个节点插入到一个有序的序列中。对于链表而言,要依次从待排序的链表中取出一个节点插入到已经排好序的链表中,也就是说,在单链表插入排序的过程中,原链表会截断成两部分,一部分是原链表中已经...
分类:
其他好文 时间:
2014-06-22 23:26:37
阅读次数:
199
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1-...
分类:
其他好文 时间:
2014-06-22 22:57:49
阅读次数:
347
对于我们这种菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改。
因为MongoDB存储数据都是以文档的模式,所以在操作它的数据时,也是以文档为单位的。那么我们实现增删查改也是以文档为基础,不知道文档是什么的同学可以看看上篇介绍的基本概念。
1.插入文档
向Mongo...
分类:
数据库 时间:
2014-06-22 20:42:31
阅读次数:
388
Sort a linked list in O(n log n)
time using constant space complexity.
这道题目非常简短的一句话,给链表排序,看到nlogn,我们可以来简单复习一下排序。首先说一下这个nlogn的时间复杂度(根据决策树我们可以得出这个界限),是基于比较排序的最小上限,也就是说,对于没有一定范围情况的数据来说,最快的排序思路就是归并和快速排...
分类:
其他好文 时间:
2014-06-22 09:02:54
阅读次数:
250