生成一个类似于Python 2 中repr()返回的字符串。 bin(x) 将整数转换为以“0b”为前缀的二进制字符串。结果是一个有效的Python表达式。...若,超出异常,将抛出ValuaError异常 @classmethod 讲一个方法转换为类方法 类方法接受类作为隐式的第一参数,就像实例方法接受实例作为隐式的第一个参数。...在所有情况下,执行的代码应该可以作为有效的文件输入(参见“参考手册”中的“文件输入”部分)。...对于二进制读写访问,模式'w b'打开并将文件截断为0字节。'r b'打开文件而不截断。 如概述中所述,Python区分二进制和文本I / O。...以二进制模式打开的文件(包括模式参数中的'b')将内容作为字节对象,而不进行任何解码。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。...分析 得到最小元素的关键就是怎么去保存这个最小元素,这里在push的时候将插入的值作为键,当前最小值作为值作为一个元素插入栈。...题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。...return result 二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。...题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
该模式如下所示: 给定两个间隔(" a"和" b"),这两个间隔可以通过六种不同的方式相互关联: 了解和认识这六个情况将帮助你解决从插入间隔到优化间隔合并的各种问题。...如何确定何时使用此模式: 如果要求你在不占用额外内存的情况下反向链接列表 链表模式就地反转的问题: 撤消子列表(中) 反转每个K元素子列表(中) 7、Tree BFS 该模式基于广度优先搜索(BFS)技术来遍历树...使用这种方法可以有效地解决涉及逐级遍历树的任何问题。 Tree BFS模式的工作原理是将根节点推送到队列,然后不断迭代直到队列为空。对于每次迭代,我们都删除队列开头的节点,然后"访问"该节点。...如果减少,则搜索结束=中间+1 这是"修改后的二进制搜索"模式的直观表示: 具有修改后的二进制搜索模式的问题: 与订单无关的二进制搜索(简单) 在排序的无限数组中搜索 12、前K个元素 任何要求我们在给定集合中找到顶部...该模式如下所示: 将每个数组的第一个元素插入最小堆中。 之后,从堆中取出最小的(顶部)元素并将其添加到合并列表中。 从堆中删除最小的元素后,将相同列表的下一个元素插入堆中。
此外,两个子树也是二叉搜索树。二叉搜索树可以有效地检索数据。 ? image 矩阵:矩阵是一个双维数组。它使用两个索引行和列来存储数据。 ? image 图:图包含一组节点和边。节点也称为顶点。...在这里,我列出了计算机科学中一些广泛使用的算法:排序,搜索,重复编程和动态编程。 排序:排序是一种算法,由一系列指令组成,这些指令将数组作为输入,对数组执行指定的操作,有时称为列表,并输出排序的数组。...image 插入排序:它通过逐个移动元素对数组进行排序。每次迭代都会从输入数据中删除一个元素,并将其插入正在排序的列表中的正确位置。它对于较小的数据集是有效的,但对于较大的列表而言效率非常低。...image 搜索:搜索是基于密钥查找内容。有线性搜索和二进制搜索。 线性搜索:线性搜索是一种在列表中查找目标值的方法。它按顺序检查列表中每个元素的目标值,直到找到匹配项或者直到搜索完所有元素为止。...image 二进制搜索:二进制搜索是一种有效的算法,用于从有序的项目列表中查找项目。它的工作原理是反复将列表中可能包含该项目的部分分成两半; 直到你将可能的位置缩小到一个。
**编写一个程序 Squeeze.java,该程序接受一个字符串作为输入,并删除相邻的空格,最多保留一个空格。 **删除重复项。**给定一个字符串,创建一个新字符串,其中删除所有连续的重复项。...对每个桶中的元素进行插入排序(或者等效地,只对整个文件进行插入排序)。也就是说,对一个级别进行 MSD 基数排序,然后切换到插入排序。[尝试原地进行?] 解决方案:平均总共需要 O(N) 的时间。...编写一个程序,接受一个命令行输入 N,并打印 N 个形式为(xxx)xxx-xxxx 的随机电话号码。使用符号表避免多次选择相同的号码。使用这个区号列表来避免打印虚假的区号。使用 R 向 Trie。...向StringSET添加一个方法containsPrefix(),接受字符串 s 作为输入,并在集合中存在包含 s 作为前缀的字符串时返回 true。 子字符串匹配。...编写一个程序 SearchAndReplace.java,它接受两个字符串作为命令行输入,从标准输入读取数据,并用第一个字符串替换所有出现的第一个字符串,并将结果发送到标准输出。
两数之和的期望是Target,将Target依次减输入数组的元素,得到的值和直接寻址表比较,如果寻址表存在这个值则返回;如果不存在这个值则将输入数组中的元素插入寻址表,再进行输入数组中的下一个元素。...这个外部类可以是链表对象,也可以是红黑树对象,都可以存一个或者一个以上的元素,也可以是空链表或空树。散列表在某种意义上需要的数组空间可以比直接寻址表要少的很多。...动态空间处理其实就是改变数组的长度,可以设定一个构造函数,这个构造函数可以接受一个固定的容量作为参数。 M是目前散列表数组的长度,N是目前在散列表已插入元素的个数。...扩容和缩容都会创建一个新的长度M的散列表,散列函数也会因为M而改变,原来的所有元素通过新的散列函数重新散列并插入新的散列表中。...动画:动态空间处理 Java 8之前,每一个槽对应一个链表; Java 8开始之后,当哈希冲突达到一定程度时,每一个位置槽从链表转成红黑树。 面试官很客气,一直送我到门口,我依依不舍地离开这个地方。
特性 它总是平衡的:无论何时我们在结构中删除/插入一个元素,我们只需要“筛选”/“渗透”它直到它处于正确的位置; 节点k > 1的父节点是[k/2](其中 [x] 是 x 的整数部分),其子节点是2k和...特性 作为二叉树,节点 x 将2x和2x+1作为子节点,[x/2]作为父节点,其中[x]是x的整数部分; 更新段树中整个范围的一种有效方法称为“延迟传播”,它也是在 O(log n) 中完成的(有关操作的实现...作为一种 DAC 方法,您连续将 DS 分成两半,并将搜索中的值与中间元素的值进行比较。如果它们相等,则搜索结束。无论哪种方式,如果您的值大于/小于它,搜索应该继续在右/左半部分。...队列中的第一个元素被弹出。我们将访问它的所有邻居,并将之前未访问的邻居推入队列。重复该过程直到队列为空。当队列为空时,表示所有可达顶点都已访问完毕,算法结束。...创建最小堆并将每个节点连同它们的距离值一起推入其中。然后,源成为距离为 0 的堆的根。其他节点将无限分配为距离。当堆不为空时,我们提取最小距离值节点 x。
Delete——删除指定索引位置的元素 • Size——得到数组所有元素的数量 面试中关于数组的常见问题 • 寻找数组中第二小的元素 • 找到数组中第一个不重复出现的整数 • 合并两个有序数组...栈的基本操作 • Push——在顶部插入一个元素 • Pop——返回并移除栈顶元素 • isEmpty——如果栈为空,则返回true • Top——返回顶部元素,但并不移除它 面试中关于栈的常见问题...——返回队列的第一个元素 面试中关于队列的常见问题 • 使用队列表示栈 • 对队列的前k个元素倒序 • 使用队列生成从1到n的二进制数 ?...链表就像一个节点链,其中每个节点包含着数据和指向后续节点的指针。 链表还包含一个头指针,它指向链表的第一个元素,但当列表为空时,它指向null或无具体内容。.../头部插入指定元素 • Delete - 从链接列表中删除指定元素 • DeleteAtHead - 删除链接列表的第一个元素 • Search - 从链表中返回指定元素 • isEmpty
在散列表中,不是直接把keyword作为数组的下标,而是依据keyword计算出对应的下标。 使用散列的查找算法分为两步。第一步是用散列函数将被查找的键转化为数组的一个索引。...(假设M不是素数,我们可能无法利用键中包括的全部信息,这可能导致我们无法均匀地散列值。) 浮点数 将键表示为二进制数,然后再使用除留余数法。...开放地址散列表中最简单的方法叫做线性探測法:当碰撞发生时,我们直接检查散列表中的下一个位置(将索引值加1),假设不同则继续查找,直到找到该键或遇到一个空元素。...(开放地址类的散列表的核心思想是:与其将内存用作链表,不如将它们作为在散列表的空元素。这些空元素能够作为查找结束的标志。)...在Trie树中有两种结点: 分支结点:含有d个指针域和一个指示该结点中非空指针域的个数的整数域。
找到数组的第二个最小元素 数组中的第一个非重复整数 合并两个排序的数组 重新排列数组中的正负值 堆栈 堆栈是一种只允许在表的一端进行插入操作和删除操作的线性表。...常见的Queue面试问题 使用队列实现堆栈 反转队列的前k个元素 使用队列生成从1到n的二进制数 链表 链表是另一个重要的线性数据结构,它最初可能看起来类似于数组,但在内存分配,内部结构以及如何执行插入和删除的基本操作方面有所不同...链表就像一个节点链,每个节点包含数据和指向链中后续节点的指针等信息。有一个头指针,它指向链表的第一个元素,如果列表是空的,那么它只是指向null或什么都没有。链表用于实现文件系统,哈希表和邻接列表。...从链接列表中删除给定元素 DeleteAtHead - 删除链接列表的第一个元素 Search - 从链表中返回给定元素 isEmpty - 如果链表为空,则返回true 常见的链表面试问题 反转链表...计算图表中的边数 找到两个顶点之间的最短路径 树 树是一种分层数据结构,由顶点(节点)和连接它们的边组成。
每个数据项都存储在相对与其他数据项的位置。在Python列表中,这些相对位置是单个项的索引值。由于这些索引值是有序的,我们可以按顺序访问它们。这个过产生了顺序查找。...二分查找 二分查找从中间项开始,而不是按照顺序查找列表。 ? Hash查找 哈希表是以一种容易找到它们的方式存储项的集合,哈希表的每个位置,通常称为一个槽,可以容纳一个项,并且从0开始的整数值命名。...并且从0开始的整数值命名。 项和该项在散列表中所属的槽之间的映射被称为hash函数。hash函数将接收集合中的任何项,并在槽名范围内(0和m-1之间)返回一个整数。...归并排序 使用分而治之策略作为提高排序算法性能的一种方法。归并排序是一种递归算法,不断将列表拆分为一般。如果列表为空或有一个项,则按定义进行排序。...如果列表有多个项,分割列表并递归调用两个半部分的合并排序。一旦对这两个部分排序完成,就执行称为合并的基本操作。合并是获取两个较小的排序列表并将它们组合成单个排序的新列表的过程。 ? ?
静态方法rank()接受一个整数键和一个排序的int值数组作为参数,并在数组中返回键的索引,否则返回-1。...Scale.java 接受图片文件的名称和两个整数(宽度 w 和高度 h)作为命令行参数,并将图像缩放到 w-by-h。...Java 文档中说:“虽然列表可以包含自身作为元素,但极度谨慎是明智的:在这样的列表上,equals 和 hashCode 方法不再被很好地定义。” 歌曲播放列表。...为Stack添加一个名为size()的方法,返回栈中的元素数量。 为Stack添加一个名为Item[] multiPop(int k)的方法,从栈中弹出 k 个元素并将它们作为对象数组返回。...开发一个UF客户端 ErdosRenyi.java,接受一个整数命令行参数n���在 0 到n之间生成随机整数对,调用connected()确定它们是否连接,如果没有连接则调用union()(与我们的开发客户端相同
· 插入:将一个或多个元素插入数组。 · 删除:从数组中删除元素 · 搜索:在数组中搜索元素。...链表操作 · 搜索:通过简单的线性搜索在给定的链表中找到键为k的第一个元素,并返回指向该元素的指针 · 插入:在链接列表中插入一个密钥。...插入可以通过3种不同的方式完成;在列表的开头插入,在列表的末尾插入,然后在列表的中间插入。 · 删除:从给定的链表中删除元素x。您不能单步删除节点。...一些示例是二叉搜索树,B树,红黑树,展开树,AVL树和n元树。 二叉搜索树 顾名思义,二进制搜索树(BST)是一种二进制树,其中数据以分层结构进行组织。...树的应用 · 二叉树:用于实现表达式解析器和表达式求解器。 · 二进制搜索树:用于许多不断输入和输出数据的搜索应用程序中。 · 堆:由JVM(Java虚拟机)用来存储Java对象。
二叉树的主要用处之一是在编译器的设计领域。如二元表达式树。 2.4.2 查找树ADT——二叉查找树 二叉树的一个重要的应用是它们在查找中的使用。...3.2 散列函数 3.2.1 输入整数关键字 如果输入的关键字是整数,则一般合理的方法就是直接返回“Key mod TableSize”(关键字对表大小取模)的结果,除非Key碰巧具有某些不理想的性质。...当输入的关键字是随机的整数时,散列函数不仅算起来简单而且关键字的分配也很均匀。 3.2.2 输入字符串关键字 通常,关键字是字符串;在这种情形下,散列函数需要仔细地选择。...散列表常见的用途也出现在为游戏编写的程序中。当程序搜索游戏的不同的行时,它跟踪通过计算机基于位置的散列函数而看到的一些位置。如果同样的位置再出现,程序通常通过简单移动变换来避免昂贵的重复计算。...散列表很适合这项工作,因为以字母顺序排列单词并不重要;而以它们在文件中出现的顺序显示出错误拼写当然是可以接受的。 4. 优先队列(堆) 4.1 为什么需要优先队列?
搜索插入位置 35 搜索插入位置 LeetCode-Python-36. 有效的数独 36 有效的数独 LeetCode-Python-37....二叉搜索树中的插入操作 701 二叉搜索树中的插入操作 LeetCode-Python-702. 搜索长度未知的有序数组 702 搜索长度未知的有序数组 LeetCode-Python-703....子串能表示从 1 到 N 数字的二进制串 1016 数字的二进制串 LeetCode-Python-1017. 负二进制转换 1017 负二进制转换 LeetCode-Python-1018....删除最外层的括号 1021 删除最外层的括号 LeetCode-Python-1022. 从根到叶的二进制数之和 1022 从根到叶的二进制数之和 LeetCode-Python-1023....有效的回旋镖 1037 有效的回旋镖 LeetCode-Python-1038. 从二叉搜索树到更大和树 1038 从二叉搜索树到更大和树 LeetCode-Python-1041.
Size——得到数组所有元素的数量 面试中关于数组的常见问题: 寻找数组中第二小的元素 找到数组中第一个不重复出现的整数 合并两个有序数组 重新排列数组中的正值和负值 栈 著名的撤销操作几乎遍布任意一个应用...isEmpty()——如果队列为空,则返回true Top() ——返回队列的第一个元素 面试中关于队列的常见问题: 使用队列表示栈 对队列的前k个元素倒序 使用队列生成从1到n的二进制数 链表 链表是另一个重要的线性数据结构...链表就像一个节点链,其中每个节点包含着数据和指向后续节点的指针。 链表还包含一个头指针,它指向链表的第一个元素,但当列表为空时,它指向null或无具体内容。...Delete - 从链接列表中删除指定元素 DeleteAtHead - 删除链接列表的第一个元素 Search - 从链表中返回指定元素 isEmpty - 如果链表为空,则返回true 面试中关于链表的常见问题...(Hashing)是一个用于唯一标识对象并将每个对象存储在一些预先计算的唯一索引(称为“键(key)”)中的过程。
Size——得到数组所有元素的数量 面试中关于数组的常见问题 寻找数组中第二小的元素 找到数组中第一个不重复出现的整数 合并两个有序数组 重新排列数组中的正值和负值 栈 著名的撤销操作几乎遍布任意一个应用...—返回队列的第一个元素 面试中关于队列的常见问题 使用队列表示栈 对队列的前k个元素倒序 使用队列生成从1到n的二进制数 链表 链表是另一个重要的线性数据结构,乍一看可能有点像数组,但在内存分配...链表还包含一个头指针,它指向链表的第一个元素,但当列表为空时,它指向null或无具体内容。 链表一般用于实现文件系统、哈希表和邻接表。 这是链表内部结构的展示: ?... - 从链接列表中删除指定元素 DeleteAtHead - 删除链接列表的第一个元素 Search - 从链表中返回指定元素 isEmpty - 如果链表为空,则返回true 面试中关于链表的常见问题...)是一个用于唯一标识对象并将每个对象存储在一些预先计算的唯一索引(称为“键(key)”)中的过程。
搜索引擎的核心是对互联网上可用信息的庞大索引,哈希表、二叉搜索树、字典树、B-树和布隆过滤器都是索引的形式。...在接下来的部分中,我们将只描述哈希表中使用的哈希函数,而不对加密哈希函数、校验和或任何其他类型的哈希函数展开讨论。 哈希函数接受一些输入值(例如数字或文本)并返回一个整数,我们称之为哈希码或哈希值。...哈希函数返回一个整数(哈希码),我们使用这个整数(以数组的大小为模)作为我们数组中数值的存储索引。...只要我们找到一个空插槽,我们就将该值插入。相似地,我们可能无法实现常数级时间复杂度的查找,并且如果在一个索引中遇到多个冲突,那么我们最终将不得不搜索一系列长序列,然后才能找到要查找的条目。...这并非特别令人意外的结果:通过在输入数据上进行训练,学习到的哈希函数可以在一些空间更均匀地分布数值,因为 ML 模型已经知道了数据的分布!这是一种强有力的、可以显著减少基于哈希的索引所需存储量的方式。
NumPy 数组和 Python 列表 乍一看,NumPy 数组与 Python 列表类似。它们都可作为容器,能够快速获取和设置元素,但插入和移除元素会稍慢一些。...二维的情况则会更困难一些(人们正在请求这一功能)。 搜索向量中的元素 与 Python 列表相反,NumPy 数组没有索引方法。人们很久之前就在请求这个功能,但一直还没实现。...矩阵的初始化句法与向量类似: 这里必须使用双括号,因为第二个位置参数是 dtype(可选,也接受整数)。...repeat: delete 可以删除特定的行和列: 删除的逆操作为插入,即 insert: append 函数就像 hstack 一样,不能自动对一维数组执行转置,因此同样地,要么需要改变该向量的形状...为了解决这样的问题,MATLAB 的方式是创建一个网格: 使用 MATLAB 创建网格的示意图 使用如上提供的参数 I 和 J,meshgrid 函数接受任意的索引集合作为输入,mgrid 只是切分,
NumPy 数组和 Python 列表 乍一看,NumPy 数组与 Python 列表类似。它们都可作为容器,能够快速获取和设置元素,但插入和移除元素会稍慢一些。...二维的情况则会更困难一些(人们正在请求这一功能)。 搜索向量中的元素 与 Python 列表相反,NumPy 数组没有索引方法。人们很久之前就在请求这个功能,但一直还没实现。...矩阵的初始化句法与向量类似: 这里必须使用双括号,因为第二个位置参数是 dtype(可选,也接受整数)。...repeat: delete 可以删除特定的行和列: 删除的逆操作为插入,即 insert: append 函数就像 hstack 一样,不能自动对一维数组执行转置,因此同样地,要么需要改变该向量的形状...为了解决这样的问题,MATLAB 的方式是创建一个网格: 使用 MATLAB 创建网格的示意图 使用如上提供的参数 I 和 J,meshgrid 函数接受任意的索引集合作为输入,mgrid 只是切分,indices
领取专属 10元无门槛券
手把手带您无忧上云