随笔分类 - 01CS基础_03数据结构和算法
摘要:1、二叉树经典习题 模拟忘记知识点和技巧时,遇到一个新的二叉树习题,该如何处理思考和写代码解题? 1.1、 leetcode 965 题目和题意: 题解1 成员变量self.ans: 题解2 递归回传: 1.2、 leetcode 257 该题是个经典二叉树题目 题目和题意: 题解: 分析,所有路径
阅读全文
摘要:1、二叉树自顶向下(top-down)递归 1.1、 leetcode 104 题目和题意: 图示: 题解: 1.2、自顶向下特点 1.3、 leetcode 226 题目和题意: 题解: 1.4、 leetcode 111 题目和题意: 题解: 1.5、 leetcode 112 题目和题意: 题
阅读全文
摘要:1、二叉树的递归 递归: 2、二叉树遍历之DFS深度优先遍历 2.1、遍历的概念 每个节点 都要恰好被访问一次,本质上是二叉树的线性化 。 一个树形的结构,线性化为一个数组之类的"串"的结构。 2.2、DFS深度优先遍历 示例二叉树原型图: 2.2.1、前序遍历 前序遍历执行顺序: 根节点--对左子
阅读全文
摘要:1、二叉树定义 2、二叉树存储结构 2.1、经典题目代码构建 代码构建: 代码对应的二叉树的图: 一行代码搞定lettcode2236,运行通过;就是考察对二叉树结构的理解: 3、深度优先遍历DFS和广度优先遍历BFS概念 3.1、深入讲解广度优先遍历BFS 树的 广度优先遍历BFS 也可以称之为层
阅读全文
摘要:#1、基础排序算法 接下类,我们学习另外一类非常基础的算法,即排序算法。 排序算法是计算机科学领域研究的非常深入的一类算法,排序这个动作本身也是非常重要的, 很多时候面对无需的数据,首先需要做的就是对他们进行排序。 排序算法——目的:让数据有序。 排序算法——种类:种类也非常多,适用于不同的情景。
阅读全文
摘要:#1、数组生成器 测试算法性能肯定不能自己手动声明创建数组了,在现代计算机上,对于O(n)级别的算法,都需要10W级别以上的数据才能看到性能,我们肯定不能手动声明10W个元素的数组吧? 所以,创建数组生成器。 这里,自己创建一个数组生成器——ArrayGenerator。 package com.m
阅读全文
摘要:#1、线性查找法的复杂度 public static <E> int search(E [] data,E target){ for (int i = 0; i < data.length; i++) if (data[i].equals(target)) return i; return -1;
阅读全文
摘要:#1、复杂度分析 复杂度分析本身是非常理论化的一个内容,在计算机科学中,有一个专门的学科叫做——计算复杂性理论。 很多童鞋看过《算法导论》,这本书的内容很多很强调算法导论。 但是实际上,对于普通程序员来说,不需要过度强调理论化的内容。因为工作中更多面对的是实际的 软件工程,工程化的工作不需要面对太多
阅读全文
摘要:循环不变量 #1、循环开始时需要做什么? 之前我们讲的线性查找法的核心代码如下: public static <E> int search(E [] data,E target){ for (int i = 0; i < data.length; i++) if (data[i].equals(ta
阅读全文
摘要:1、算法描述 2、上一篇的实现结果 在扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性查找法中,我们实现了: package com.mosesmin.datastructure.week01.chap02; /** * @Misson&Goal 代
阅读全文
摘要:1、算法描述 在数组中逐个查找元素,即遍历。 2、上一篇文的实现结果 在 扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法中,我们实现了如下代码: package com.mosesmin.datastructure.week01.chap02;
阅读全文
摘要:1、算法描述 在数组中逐个查找元素,即遍历。 2、思路原理 如算法描述,基本是最简单的代码块了,没有什么额外的原理。 3、初步的代码实现 线性查找法初步的代码实现: package com.mosesmin.datastructure.week01.chap02; /** * @Misson&Goa
阅读全文
摘要:1、线性查找法 什么是线性查找法? 举例:在一沓试卷中,找到属于自己的那张试卷。 第1张:不是 第2张:不是 第3张:不是 …… 第n张:是,找到了! 第n+1张:不找了 …… 这个解决问题的思路和过程体现就是线性查找法的思想。 #2、线性查找法思路梳理 线性查找法,就是在线性的数据结构中来完成。
阅读全文
摘要:#1、什么是算法? 为了明确什么是算法,我们会从简单的查找功能开始讲起。 查找其实一个一个非常简单的算法, 但我们会为这个查找功能的算法做如下工作: 让查找的功能适应更多的数据类型 通过查找的例子讲解如何编写正确的程序? 为查找算法性能测试 对一些常见算法做复杂度分析 #2、定义算法 Algorit
阅读全文