zoukankan      html  css  js  c++  java
  • 数据结构与算法经典问题解析-Java语言描述

    第一章 绪论

    两个主定理:

     其时间复杂度为O(nlogn)

    1 问题21与问题22对比可以发现:

       问题规模减小和递归求解主定理中f(n)必须要是正的方可,否则不能直接套定理,只能用数学带入法求解。

    2 问题34

    对T(n)=2T(n/2)+cn 时间复杂度的求解,参考算法导论一书

    根据上面求解思路可得出:T(n)=T(n-1)+T(n-2)+c的时间复杂度为O(2^n)

    利用树结构,可知树的深度为n,这棵树是一个满二叉树所以叶子节点的数目为2^n,每个叶子节点花费O(1)的运行时间,那么最终的时间复杂度为O(2^n)

    3 问题39

    对T(n)=T(0.8n)+O(n)这个和前面的递归是不同的,并没有对T(n)进行拆分,仍是单纯的一条链路因此可以提出:T(n)=0.8T(n)+O(n),那么其时间复杂度为O(n)

    4 问题40

    对T(n)=aT(√n)+b这种,一般假设n=2m转换成主定理的形式再求解

    第三章 链表

    1 Floyd判圈算法证明:

    2 利用数组下标和元素创建链表:leetcode 287. 寻找重复数

    思路:当前数组元素既是当前节点的值也是下一节点元素的索引位置

    3 约瑟夫环:参考剑指offer:圆圈中最后剩下的数字

  • 相关阅读:
    练手
    课余时间娱乐下
    2017-2-19,作业
    JavaScript(下)
    JavaScript(上)
    Day15:网络编程-HTTP
    小知识:静态导入
    多线程知识点:锁
    多线程知识点:同步
    Day16:反射技术
  • 原文地址:https://www.cnblogs.com/youngao/p/13634996.html
Copyright © 2011-2022 走看看