
算法与数据结构
范培华
移动端应用摸索中
展开
-
LeetCode 第1题:Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ele原创 2017-10-23 16:12:55 · 332 阅读 · 0 评论 -
LeetCode 第17题:Letter Combinations of a Phone Number
采用递归的思想解答。回溯法实现原创 2017-10-30 16:29:51 · 655 阅读 · 0 评论 -
KMP算法详解
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是遍历a的每一个位置,然后从该位置开始和b进行匹配,但是这种方法的复杂度是O(nm)。kmp算法通过一个O(m)的预处理,使匹配的复杂度降为O(n+m)。 kmp算法思想 我们首先用一个图来描述kmp算法的思想。在字符串O中寻找f,当匹配到位置i时两个字符串不相等,这原创 2017-03-21 18:59:30 · 642 阅读 · 0 评论 -
算法第四版练习题答案
算法第4版练习题答案 Algorithms 4th edition exercise answers. 1 FUNDAMENTALS 1.2.13 Transaction.java transaction data type 1.2.16 Rational.java rational number转载 2017-02-22 16:35:14 · 11186 阅读 · 0 评论 -
HashMap实现原理分析
数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。 哈希表 那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表。哈希表((Hash table)原创 2016-01-22 14:42:00 · 508 阅读 · 0 评论 -
缓存淘汰算法--LRU算法
1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.2. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中(即缓存数据被访问),则将数据移到原创 2016-06-25 21:07:15 · 3327 阅读 · 0 评论 -
Leetcode 第206题:Reverse Linked List
链表问题1.递归思路/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode re原创 2017-11-03 10:38:23 · 694 阅读 · 0 评论