博客专栏  >  编程语言   >  算法和数据结构C++实现

算法和数据结构C++实现

用C++实现各种数据结构和算法,包括书本《算法导论》《数据结构-严蔚敏》《算法设计与分析》等的例子,和面试常用算法,经典算法等。 本专栏注重C++语言特征,包括STL的用法。

关注
162 已关注
191篇博文
  • Leetcode Symmetric Tree 递归和非递归解法

    和same tree题目差不多一样的解法。 1 recursively 递归法: 2 iteratively 非递归: 使用先序遍历,原来树的先序遍历的非递归写法也不简单。

    2014-02-16 01:11
    14132
  • Leetcode Palindrome Partitioning II

    因为我研究了很长时间,没看提示的情况下,观察了各种可能的判断,始终没有找到可行的快捷方法,判断时间效率必定为O(n*n),没有找到什么规律可以提高效率。最后上网搜索也没看到有可行方法。 整个题目解决,...

    2014-02-07 08:01
    1621
  • Leetcode Recover Binary Search Tree

    本题注意不能通过测试是否是合法二叉树来修复,而是要通过检查全局二叉树确定哪两个节点的值调换了。 检查全局二叉树就是通过检查哪两个值是不按由小到大的顺序的。 可以利用额外空间O(n)空间,也可以使用常量...

    2014-02-12 08:06
    1939
  • Leetcode Recover Binary Search Tree

    本题注意不能通过测试是否是合法二叉树来修复,而是要通过检查全局二叉树确定哪两个节点的值调换了。 检查全局二叉树就是通过检查哪两个值是不按由小到大的顺序的。 可以利用额外空间O(n)空间,也可以使用常量...

    2014-02-12 08:06
    1939
  • Geeks 面试题: Longest Bitonic Subsequence

    这里的技巧是两边扫描,然后合起来,时间效率也是O(n*n),和求最大递增子段和一样。 两边扫描是个经典技巧,一定要记得,掌握。

    2014-02-02 07:05
    1751
  • Craking the Coding Interview 面试题:随机抽出子数列

    在给定的一个大数列中,随机抽出一个子数列,要求所有数被抽出的概率都是一样的,如下面的运行结果: int rangeRandNum(int a, int b) { return rand(...

    2014-01-31 09:48
    1584
  • Geeks面试题: Maximum Sum Increasing Subsequence

    下面程序是我的解决方法,时间效率也是O(n*n) 思路: 1 从地往上解决法 2 计算当前数值到下一个数值是否是递增,如果是递增,后面所有数值的递增数列加上当前数值 3 一直计算到最后,就得到数列中所...

    2014-01-30 06:51
    2601
  • Leetcode Populating Next Right Pointers in Each Node II

    Populating Next Right Pointers in Each Node II   What if the given tree could be any binary tree? Wo...

    2014-01-30 07:02
    2348
  • Leetcode Best Time to Buy and Sell Stock III

    要掌握这种思想: 1 两段分段思想 2 前往后,后往前都可以处理数列的思想 时间复杂度是O(n),不掌握这种思想是很难做出来的。

    2014-01-27 08:53
    2049
  • leetcode Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel...

    2014-01-27 08:46
    1939
  • Leetcode Palindrome Partitioning

    典型的递归回溯法,当然可以利用动态规划法提高点效率。 下面是标准的递归回溯程序:

    2014-01-26 08:17
    1614
  • Leetcode Reverse Nodes in k-Group

    这种题目一般有技巧: 1 增加dummy前置节点,dummy.next指向头节点,可以让程序简洁点 2 注意保存当前节点的next节点 3 可以利用好k来计算,注意准确计算需要操作的节点指针

    2014-01-26 08:13
    2379
  • Leetcode Container With Most Water

    知道原理就是很简单的程序。两边搜索,短板往里走。因为往里走,代表宽度减小,那么宽度小的时候,只有遇上更高的高度才能组成更加大的container。

    2014-01-25 09:32
    4405
  • Leetcode Sort List 链表归并排序

    本题好像使用quicksort是不能AC的,只能使用归并排序了。 之前觉得是很困难的题目。 训练了这么久算法,功力终于上升了。虽然还没达化境,但是以前觉得什么归并排序,快速排序好像很难,曾经死记过,始...

    2014-01-25 09:38
    1919
  • Geeks面试题:Floyd Warshall Algorithm 所有顶点之间的最短路径问题

    就是严慧敏的数据结构书上的图论介绍的所有顶点之间的最短路径问题。 不过书上没有说是使用动态规划法做这道题的,也就说的并不透切。 记得当年钻研这本书的时候,觉得本题十分难理解,半天没搞明白,然后后来反复...

    2014-01-24 08:07
    3116
  • Leetcode Interleaving String

    这种题目应该立即反应需要动态规划法,会填表,然后翻译为程序。可以用递归法求解,但是会超时,而且好像都不容易写。 不过这里是三个字符串,应该如何设计这个表是个大问题。 这里用s1和s2作为二维表的两个维...

    2014-01-24 08:29
    1551
  • Leetcode Clone Graph

    这里使用深度优先搜索。这样可以递归实现,如果是宽度优先,就要额外使用queue容器。 关键点: 1 这里的clone需要深度拷贝,就是要使用new操作了 2 防止回路无限循环,就要使用hash表,这里...

    2014-01-23 06:42
    5644
  • Leetcode LRU Cache

    五星级难度的题目。 这里的get和set操作都要求时间复杂度为O(1)。 思考了好久才想到要用一个双向链表数据结构来保存优先级列表,代表这里的LRU Cache。这个是本题的关键。 如果使用其他方法,...

    2014-01-23 06:29
    1852
  • Leetcode Populating Next Right Pointers in Each Node

    直接上递归法 新知识点: 重点注意:利用新构造的数据结构 有人会觉得使用递归并不符合常数空间的题意,那么可以改成非递归:

    2014-01-23 06:06
    1149
  • Cracking the coding interview: 查找文中两个单词的距离

    解法一:只需要一次性查询的,我们可以利用两个下标,一个记录最后一次遇到第一个单词的下标,另外一个记录遇到另外一个单词的下标,然后每次比较两个单词的距离,记录当前最小的两个单词的距离,最后就得到最小的距...

    2014-01-21 09:28
    1564
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部