摘要:
目录 P NP NPC NPH 写在开头 1、多项式 如公式:y = axn-bxn-1+c。Ο(log2n)、Ο(n)、 Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间。Ο(2n)和Ο(n!)称为指数时间。 2、时间复杂度 度量程序随问题规模n的变化而变化所消耗的时间。 P P:poly 阅读全文
摘要:
程序 = 数据结构 + 算法。 程序用以处理数据,发现数据表象背后的客观规律,用代码实现此规律即程序。写程序就像雕一件艺术品一样,最精髓在于对表面现象背后本质的思考,即算法,代码只是实现算法的途径,根据具体问题,选择最为合适的编程语言和数据结构,达到时间和空间的平衡。 本文主要以python和c++ 阅读全文
摘要:
代码模板 切题方法 一、递归代码 二、深度优先 三、广度优先 四、二分查找 五、DP动态规划代码 位与运算 切题方法 阅读全文
摘要:
题目:70、爬楼梯 思路: 一、采用回溯法,递归+记忆化 二、采用动态规划,时间复杂度为O(n),采用递推的方式 要找到DP的状态和DP方程。 代码(动态规划): 题目:120、三角形最小路径和 思路: 一、回溯 二、动态规划 从底层倒推,明确状态转移方程和初始状态。 初始状态是最后一层,转移方程是 阅读全文
摘要:
目录 递归 分治 1、求指数 n的阶乘的计算法方式。 递归的必要条件 参数里面有明显的层级,level。 递归的终止条件。大多数在最前面 数据的处理 调用下一层 解决完下一层的任务后做的工作(按需) 分治 分治思路: 明确问题problem 明确终止条件 准备数据并将大问题拆分成小问题 对子问题进行 阅读全文
摘要:
剪枝: 主要用在搜索中的一个策略。 以下是两种搜索方法:广度搜索和深度搜索 阅读全文
摘要:
阅读全文
摘要:
本文是学习《极客时间-面试》数组和链表中的内容。 目录 1、翻转链表 2、翻转链表对 3、环链表 题目一:翻转链表 博客:翻转链表 题目二:翻转链表对 1-2-3-4-5 >>>>>2-1-4-3-5 思路:需要定义三个指针,进行交换。 定义前指针,指向两两节点。遍历时候单双节点个数,用后面的两个节 阅读全文
摘要:
目录 Stack 有效的括号? Queue 栈模拟队列 优先队列 数据流中第k大值 窗口滑动中的最大值 时间复杂度表 堆栈:先入后出 队列:先入先出 数据结构时间复杂度表。 http://www.bigocheatsheet.com/ 题目:有效的括号 https://leetcode-cn.com 阅读全文
摘要:
哈希表 有效的字母异位词 两数相和 三数相和 四数相和 力扣242:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 示例 2: 说明: 思路: 一、排序 将两个词都排序,快排是nlogn,最终看两者是否相同。 二、map进行计数 对两个 阅读全文
摘要:
目录 验证二叉搜索树 二叉树的最近公共祖先 二叉搜索树的最近公共祖先 题目:力扣98题:验证二叉搜索树 https://leetcode-cn.com/problems/validate-binary-search-tree/submissions/ 思路: 对二叉搜索树有个明确的定义, 即左子树所 阅读全文
摘要:
主方法:用来计算递归的时间复杂度。 二分查找算法是log(n) 二叉树的遍历是O(n)因为每个节点遍历一次 快排或者归并排序是nlog(n) 阅读全文
摘要:
本文是学习《极客时间-算法面试通过》笔记。第一节:如何学习数据结构和算法? 两个笔试环境: http://collabedit.com https://coderpad.io/ feedback:三种 主动型反馈:自己找原因,刷题或者GitHub看 被动型反馈:高手指点,可遇不可求,暴露问题 对比反 阅读全文