算法
文章平均质量分 74
电商架构修炼
keep writing and sleeping
展开
-
读数据结构与算法之美(四)
4.散列表&哈希&树 18 - 散列表(上):Word文档中的单词拼写检查功能是如何实现的? 散列表:Hash Table,又称哈希表,或者hash表。 散列表,用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,没有数组就没有散列表。 关键字:键(key)、哈希函数、散列值(value) 哈希函数的三个基本要求: 1.散列值是一个非负正数 2.key1==key2 则hash(key1)==hash(key2) 3.key1!原创 2022-02-20 09:52:39 · 815 阅读 · 0 评论 -
读数据结构与算法之美(三)
11 - 排序(上):为什么插入排序比冒泡排序更受欢迎? 章节 排序算法 时间复杂度 是否基于比较 11 冒泡、插入、选择 O(n²) 是 12 归并、快排 O(nlogn) 是 13 桶、计数、基数 O(n) 否 如何分析一个排序算法? 1.排序算法的执行效率 最好、最坏、平均情况时间复杂度 时间复杂度的系数、常数、低阶 比较次数和交换次数 2.排序算法的内存消耗(是否原地排序) 3.排序算法的稳定性(值原创 2022-02-19 09:39:19 · 616 阅读 · 0 评论 -
读数据结构与算法之美(二)
2.数组&链表&栈&队列&递归 05 - 数组:为什么很多编程语言中数组都从0开始编号? 如何实现随机访问? 数组,是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表:数组、链表、队列、栈 非线性表:二叉树、堆、图 数组和链表的区别? 数组适合查找操作,查找时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是O(logn)。正确的表述是,数组支持随机访问,根据下标随机访问的时间复杂度是O(1)。 低效的”原创 2022-02-06 09:29:07 · 1163 阅读 · 0 评论 -
读数据结构与算法之美(一)
1.开篇(指导手册&复杂度分析) 《数据结构与算法之美》学习指导手册 1.复杂度分析 掌握程度:自行分析专栏中大部分的数据结构和算法的时间、空间复杂度 2.数组、栈、队列 掌握程度:能自己实现动态数组、栈、队列 3.链表 掌握程度:能轻松写出经典链表题目代码 4.递归 理论知识不多,主要是多练。 简单:斐波那契数列、求阶乘; 中等:归并排序、快速排序、二叉树的遍历、求高度; 复杂:回溯八皇后、背包问题 掌握程度:轻松写出二叉树遍历、八皇后、背包问题、DFS的递归代码 5.原创 2022-02-05 10:03:18 · 1146 阅读 · 0 评论 -
java算法之N阶楼梯的走法
1. 前言 最近找工作笔试,碰到一个算法笔试题,现将其分析记录并拓展下。 题目:楼梯总共N阶,小明可以一次可以跨1步,2步,3步,请用递归求出小明总共有多少种跨法走完这个楼梯。 2. 回溯法 我自己在笔试中用的这种方法, 将设任意一个状态,三种情况我都尝试下,如果可以就继续沿着路径往下走,不行就回溯尝试的这一步。 //到达一个状态时,都先尝试走下所有的分支可能,然后再依次回...原创 2018-08-27 23:06:19 · 5505 阅读 · 0 评论 -
Java算法之两个大整数相加
1. 前言 今天做了一家公司的在线笔试题,其中有道算法蛮有意思的,在此记录并拓展下知识点,以备以后复习之用。 题目: Java中两个大整数(超过了long的表示范围)相加,不能用java已用的工具类。 2. 分析 既然long都表示不下了,那就是String来记录了,将String类型转为char数组,然后两个数的个位,十位等对齐相加,最终结果再转为String类型。 本题想考察的...原创 2018-08-19 22:00:08 · 5443 阅读 · 0 评论 -
一张图搞定三大经典排序
三大经典排序,冒泡、选择、插入,一图对比之。原创 2020-07-14 22:45:58 · 1656 阅读 · 2 评论