博客专栏  >  综合   >  一点一点学算法

一点一点学算法

本专栏对一些常用算法问题进行分析和实现,同时也记录了我在学习算法过程中的总结和体会,欢迎大家一起交流,共同进步!

关注
12 已关注
23篇博文
  • 设计并实现一个LRU Cache

    一、什么是Cache1 概念Cache,即高速缓存,是介于CPU和内存之间的高速小容量存储器。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近CPU的...

    2015-05-09 15:17
    2011
  • 求最长回文子串

    回文串,就是指正读和反读都一样的字符串,比如"level"或者"noon"等等。 那么,如何求一个字符串的最长回文子串(Longest Palindromic Substring)?通常我们有多种解...

    2015-05-12 20:50
    709
  • Trie树(Prefix Tree)介绍

    本文用尽量简洁的语言介绍一种树形数据结构 —— Trie树。一、什么是Trie树Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树 或 键树,是一种多叉树结构。如下图: 上图是...

    2015-05-09 01:49
    5431
  • 拓扑排序(Topological Sorting)

    一、什么是拓扑排序在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条...

    2015-05-07 01:56
    8361
  • 二叉查找树(BST)

    二叉查找树(BST) 二叉查找树(Binary Search Tree)又叫二叉排序树(Binary Sort Tree),它是一种数据结构,支持多种动态集合操作,如 Search、Insert、D...

    2015-01-10 23:44
    1216
  • AES加密算法的C++实现

    摘要:作为新一代的加密标准,AES 旨在取代 DES(请看《DES加密算法的C++实现》),以适应当今分布式开放网络对数据加密安全性的要求。本文在分析了 AES 加密原理的基础上着重说明了算法实现的...

    2014-12-13 14:25
    17120
  • DES加密算法的C++实现

    《信息安全技术》这门课又在讲 DES 加密算法了,以前用纯C写过一次,这次我用 C++ 重新写了一个,写篇文章以备后用。本文介绍了 DES 算法加密的大致步骤和整体流程。 一、DES算法原理 DES算...

    2014-12-06 18:31
    15724
  • 【动态规划】输出所有的最长公共子序列

    上篇讲到使用动态规划可以在 θ(mn) 的时间里求出 LCS 的长度,本文将讨论如何输出最长公共子序列。 问题描述:给定两个序列,例如 X = “ABCBDAB”、Y = “BDCABA”,求它们的最...

    2014-11-29 15:41
    4646
  • 【动态规划】Dynamic Programming

    动态规划 一、动态规划 动态规划(Dynamic Programming)是一种设计的技巧,是解决多阶段决策过程最优化问题的通用方法。 基本思想:将待求解问题分解成若干个子问题,先求解子问题,然后从...

    2014-11-27 16:41
    3591
  • 算术表达式的合法性判断与求值(下)

    上一篇讲到,通过编译原理的方法(词法分析和语法分析)来判断字符串表示的算术表达式的合法性。这一篇,接着讲在算术表达式合法的情况下,对表达式进行求值。 问题:给定一个字符串,只包含 '+'、'-'...

    2014-10-07 11:05
    2224
  • 算术表达式的合法性判断与求值(上)

    在写一个计算器时遇到了一个问题,就是对字符串表示的算术表达式的合法性判断与求值。下面记录一下我的解决方案。 一、问题描述 问题:给定一个字符串,只包含 '+'、'-'、'*'、'/'、数字、小数点...

    2014-10-06 20:37
    3006
  • 深度优先搜索的实现

    图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。注意到树是一种特殊的图,所以树的遍历实际上也可以看作是一种特殊的图的遍历。图的遍历主要有两种算法:...

    2014-07-04 16:06
    1587
  • 广度优先搜索的实现

    图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。注意到树是一种特殊的图,所以树的遍历实际上也可以看作是一种特殊的图的遍历。图的遍历主要有两种算法:...

    2014-07-03 21:36
    1470
  • 第K顺序统计量的求解

    一个n个元素组成的集合中,第K个顺序统计量(Order Statistic)指的是该集合中第K小的元素,我们要讨论的是如何在线性时间(linear time)里找出一个数组的第K个顺序统计量。 一、...

    2014-06-22 22:43
    1412
  • 线性时间的排序算法

    前面已经介绍了几种排序算法,像插入排序(直接插入排序,折半插入排序,希尔排序)、交换排序(冒泡排序,快速排序)、选择排序(简单选择排序,堆排序)、2-路归并排序(见我的另一篇文章:各种内部排序算法的实...

    2014-06-22 14:19
    851
  • 快速排序的分析与优化

    一、快速排序的介绍 快速排序是一种排序算法,对包含n个数的输入数组,最坏的情况运行时间为Θ(n2)[Θ 读作theta]。虽然这个最坏情况的运行时间比较差,但快速排序通常是用于排序的最佳的实用选择。...

    2014-06-21 22:07
    1115
  • 矩阵原地转置

    一,问题描述     微软面试题:将一个MxN的矩阵存储在一个一维数组中,编程实现矩阵的转置。     要求:空间复杂度为O(1) 二,思路分析     下面以一个4x2的矩阵A={1,2...

    2014-06-06 17:36
    1112
  • 变位词问题

    《编程珠玑》第二章提到了一个变位词问题,变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary。由变位词可以引申出几个算法问题,包括字符串包含问题,比较两个...

    2014-06-05 22:16
    1163
  • 一维向量旋转算法

    《编程珠玑》第二章提到了n元一维向量旋转算法(又称数组循环移位算法)的五种思路,并且比较了它们在时间和空间性能上的区别和优劣。 一,问题描述     将一个n元一维向量向左旋转i个位置。例如,假设...

    2014-06-05 12:04
    722
  • 位图排序

    最近在看《》

    2014-06-02 01:07
    850

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部