>>> YieldNull
  • /blog
  • /archives
  • /github
  • /about

Blog Entries all / by tag / by year

  • 斐波那契数的递归求法

    2017-07-01 17:03:41 / Algorithm /4584 hits

    斐波拉契数列,即形如0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...,通项公式为An = An-1 + An-2的数列。那么怎么用递归的方式求出指定位置的斐波拉契数呢?

    Read more...


  • Python3 Truth Value Testing and Boolean Operations

    2017-05-29 23:49:13 / Python /4092 hits

    之前一直以为Python中and、or 这两个表达式的返回值是True 或者 False,今早帮同学解答问题时才发现之前的理解是错误的。

    Read more...


  • Java字符串编码方式

    2017-05-12 11:03:22 / Encoding Java /5531 hits

    想要运行一个Java程序需要经过三个阶段:编写源代码—编译—在JVM上运行。那么一个字符串在以上三个阶段的编码方式是怎样的呢?另外,如果Java程序中要输出字符串,那么输出的字符串的编码又是什么呢?

    Read more...


  • Java内部类的私有构造函数编译策略

    2017-05-10 11:58:05 / InnerClass Java /4909 hits

    一个源文件怎么会生成这么多的.class文件呢?下面通过问答的形式阐述Java在编译内部类的私有构造函数时采用的策略。JDK版本为1.8.0_111

    Read more...


  • LeetCode: LRU and LFU Cache

    2016-12-26 16:34:33 / Algorithm LeetCode /5361 hits

    我们需要实现这样的一个cache(key-value pair):

    • 取数据时,存在则取出,不存在则返回-1
    • 存数据时,若该key已存在,则更新其value。若不存在,则插入之。插入时,若cache已满,则需要先删除一个元素。删除时,使用LFU算法,将使用频率最低的元素删除;若有多个使用频率相同的元素,则对这些元素采用LRU算法,删除最久未使用的。

    很显然,我们需要用map来存储key-value pair。然后记录各个元素的使用频率,以及最近访问的次序。

    Read more...


  • LeetCode: Wildcard Matching

    2016-11-07 21:37:36 / Algorithm LeetCode /4746 hits

    拿到题目之后,最先想到的就是构建NFA然后逐字符匹配。可以发现,整个题目的关键之处在于*的处理。首先画出*的状态图,如下:

    在pre_end状态遇到了*,生成了入上图所示的状态转换,*的处理在tail(end)状态结束。算法如下:

    1. 根据pattern生成对应的NFA
    2. 依次输入待匹配的字符,进行状态转换。转换时同步匹配多个分支,不使用回溯。也就是每次输入结束后可以有多个状态满足要求,参见Regular Expression Matching Can Be Simple And Fast
    3. 输入完所有字符后,检查当前停留的节点中是否有终止节点,有则匹配成功,反之不然。

    Read more...


  • « Previous 5 / 12
  • Next 7 / 12 »

About this site © YieldNull,