标签:VBA,用户窗体,列表框 有时候,我们想从数据表中搜索指定的内容,但匹配项往往不只一项,而我们想要将匹配项全部显示出来,如下图1所示。...图1 在Excel中,有很多方法可以实现,这里使用用户窗体和VBA代码来完成。 示例数据如下图2所示。 图2 单击“查找”按钮,弹出我们所设计的用户窗体如下图3所示。...,即如果某人正在搜索位置,则仅在位置列中搜索 With Range("Table1[" &SearchColumn & "]") ' 查找第一个匹配项 Set RecordRange...Results.List(RowCount, 3) =FirstCell(1, 4) RowCount = RowCount + 1 ' 查找下一个匹配项...RecordRange Is Nothing Then Exit Sub End If ' 在找到唯一匹配项时继续查找
A2:A10中的值,如果相同返回TRUE,不相同则返回FALSE,得到一个由TRUE和FALSE组成的数组,然后与A2:A10所在的行号组成的数组相乘,得到一个由行号和0组成的数组,MAX函数获取这个数组的最大值...,也就是与单元格D2中的值相同的数据在A2:A10中的最后一个位置,减去1是因为查找的是B2:B10中的值,是从第2行开始的,得到要查找的值在B2:B10中的位置,然后INDEX函数获取相应的值。...图2 使用LOOKUP函数 公式如下: =LOOKUP(2,1/($A$2:$A$10=$D$2),$B$2:$B$10) 公式中,比较A2:A10与D2中的值,相等返回TRUE,不相等返回FALSE...组成的数组,由于这个数组中找不到2,LOOKUP函数在数组中一直查找,直至最后一个比2小的最大值,也就是数组中的最后一个1,返回B2:B10中对应的值,也就是要查找的数据在列表中最后的值。...图3 使用VBA自定义函数 在VBE中输入下面的代码: Function LookupLastItem(LookupValue AsString, _ LookupRange As Range,
特点:叶子只能出现在最下一层;非叶子结点的度一定是2;同样尝试的二叉树,满二叉树的结点个数最多,叶子最多 完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i(1中编号为...中序遍历:规则是若二叉树为空,则空操作返回,否则从根节点开始(注意不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。...性质:已知前序和中序,可以确定二叉树;已知中序和后序,可以确定二叉树;已知前序和后序,无法确定二叉树; G.线索二叉树 1.我们把指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索列表,相应的二叉树就称为线索二叉树...折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找...不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。
一、选择题(共计 50 分) 1、在下列四种排序算法,只有( )是一种不稳定排序 A、冒泡排序 B、选择排序 C、插入排序 D、归并排序 2、一个数组,含有大量重复元素,使用( )进行排序是一种合理的抉择...A、快速排序 B、双路快速排序 C、三路快速排序 D、希尔排序 3、杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉 1261 年所著的( )一书中出现,LeetCode 上第 (...详解八章算法》、139 、140 D、《详解九章算法》、139 、140 4、小吴想执行某项破坏性的操作,比如快速删除系统元素,使用( )方式可以帮助我更好的完成这个任务 A、二叉树的前序遍历 B、二叉树的中序遍历...现在有一栋 100 层的大楼,该种玻璃杯从某一层楼扔下,刚好会碎。现给你两个杯子,问怎样检测出这个杯子的质量,即找到在哪一层楼刚好会碎? 现在有一种解法是从数学方程的角度出发。...A、语文解法 B、数学解法 C、英语解法 D、体育解法 二、填空题(共计 20 分) 11、第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 ( ) 年才出现,中间用了
代码中也备了注释。看代码吧!...:",tupleA[::-1]) print("切片倒序步长输出:",tupleA[::-2])#倒序输出每个两个字符取一次 print(tupleA[-2:-1:])#要考虑到左闭右开,不指定步长的话默认步长为...1 print(id(tupleA) ) #打印元组的内存地址id tupleA[4][0] = "蒋光道" #尝试对元组中的列表元素进行修改 print(tupleA) tuple_c = tuple...(range(10)) #强转 print(tuple_c) print(tuple_c.count(1)) #统计数据项中指定元素的出现个数 3:字典(dict) #python数据结构字典 # 字典是由键值对组成得集合...# 特点: """ 不是序列类型,没有下标得概念,是一个无无序的键值组合 {}表示字典对象,每个键用逗号分隔 键必须是不变的类型 每个键必须是唯一,如果重复,则后者会被覆盖 """ # 创建字典 dict_a
一、基本概念 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个 double 类型的分数。...redis 正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。...zrangebyscore:指定分数区间,获取列表 zrevrange:倒序展示列表 zrevrangebyscore:根据分数区间,倒序展示列表 zreverank:倒序获取成员下标 三、命令实践...score1 member1 score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数 2 ZCARD key 获取有序集合的成员数 3 ZCOUNT key min max 计算在有序集合中指定区间分数的成员数...…] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中 6 ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量 7 [ZRANGE
#集合 集合是由一组无序且唯一(即不能重复)的项组成的。...#图片来源: 掘金-在 JavaScript 中学习数据结构与算法 #集合 集合是由一组无序且唯一(即不能重复)的项组成的。你也可以把集合想象成一个即没有重复元素,也没有顺序的的数组。...处理散列表中的冲突(冲突原因:同一个位置只能存放一个值) 分离链接:为散列表的每一个位置都创建一个链表并将元素存放在里面。...线性探查:当新元素加入列表时,如果索引为index的位置已被占据,则尝试index+1的位置,依次类推,已找到空位置未知。...#二叉树遍历 假如在保证“左子树一定先于右子树遍历”这个前提 先序遍历:根节点 -> 左子树 -> 右子树 中序遍历:左子树 -> 根节点 -> 右子树 后序遍历:左子树 -> 右子树 -> 根节点 #
01 线性查找 查找数据的最简单策略就是线性查找,它简单地遍历每个元素以寻找目标,访问每个数据点从而查找匹配项,找到匹配项后,返回结果,算法退出循环,否则,算法将继续查找,直到到达数据末尾。...线性查找的明显缺点是,由于固有的穷举搜索,它非常慢。它的优点是无须像其他算法那样,需要数据排好序。...二分查找的性能:二分查找之所以如此命名,是因为在每次迭代中,算法都会将数据分成两部分。如果数据有N项,则它最多需要O(log N)步来完成迭代,这意味着算法的运行时间为O(log N)。...03 插值查找 二分查找的基本逻辑是关注数据的中间部分。插值查找更加复杂,它使用目标值来估计元素在有序数组中的大概位置。...让我们试着用一个例子来理解它:假设我们想在一本英文词典中搜索一个单词,比如单词river,我们将利用这些信息进行插值,并开始查找以字母r开头的单词,而不是翻到字典的中间开始查找。
8、写一个列表生成式,产生一个公差为11的等差数列。 9、给定两个列表,怎么找出他们相同的元素和不同的元素? 10、请写出一段Python代码实现删除list里面的重复元素?...18、求出列表所有奇数并构造新列表 19、用一行Python代码写出1+2+3+10248 20、Python中变量的作用域?...(变量查找顺序) 21、Python代码实现删除一个list里面的重复元素 22、统计一段字符串中字符出现的次数 1、输入日期,判断这一天是这一年的第几天?...list = ['a','b','c','d','e'] print(list[10:]) 运行结果: 输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某个列表的成员...然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。 例如:list[10],运行报错。
在修改后的运行次数函数中,只保留最高阶项。 如果最高阶项存在且不是1,则去除与这个项相乘的常数。...2.中序遍历:若树为空,则空操作返回,否则从最左下结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。...折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找...稠密索引:是指在线性索引中,将数据集中的每个记录对应一个索引项。 分块索引:对于分块有序的数据集,将每块对应一个索引项,这种索引方法叫做分块索引。...链地址法:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组T[0..m-1]。
在示例用法中,我们创建了一个包含七个整数的数组,并对其进行快速排序。 归并排序:采用分治策略,将数组分成若干个子数组,分别进行排序,最后将排好序的子数组合并成完整的排好序的数组。...查找算法: 查找算法用于在数据结构中查找特定元素。常见的查找算法包括线性查找和二分查找等。 线性查找:从数据结构的一端开始逐个比较每个元素,直到找到目标元素或遍历完整个数据结构。...二分查找:在有序的数据结构中,通过不断缩小查找范围来进行查找。...最后将排好序的子数组合并成完整的排好序的数组。...在实现中,我们将硬币按照面值从大到小排序,然后依次枚举每种硬币,计算使用这种硬币能够找零多少金额,然后将这种硬币加入结果列表中。重复这个过程,直到找零的金额减到0为止。
删除排序数组中的重复项 26 删除排序数组中的重复项 LeetCode-Python-27. 移除元素 27 移除元素 LeetCode-Python-28....删除排序数组中的重复项 II 80 删除排序数组中的重复项 II LeetCode-Python-81. 搜索旋转排序数组 II 81 搜索旋转排序数组 II LeetCode-Python-82....删除字符串中的所有相邻重复项 1047 删除字符串中的所有相邻重复项 LeetCode-Python-1048. 最长字符串链 1048 最长字符串链 LeetCode-Python-1051....删除字符串中的所有相邻重复项 II 1209 删除字符串中的所有相邻重复项 LeetCode-Python-1210....检查网格中是否存在有效路径(BFS) 1391 检查网格中是否存在有效路径 LeetCode-Python-1392.
我们知道,在有序数组中,可以快速找到特定的值,但是想在有序数组中插入一个新的数据项,就必须首先找出新数据项插入的位置,然后将比新数据项大的数据项向后移动一位,来给新的数据项腾出空间,删除同理,这样移动很费时...另一方面,链表中可以快速添加和删除某个数据项,但是在链表中查找数据项可不容易,必须从头开始访问链表的每一个数据项,直到找到该数据项为止,这个过程很慢。 ...因此需要考虑另一种方法,寻找它的中序后继来代替该节点。下图显示的就是要删除节点用它的后继代替它的情况,删除后还是有序的。(这里还有更麻烦的情况,即它的后继自己也有右子节点,下面再讨论。) ? ...当然树中还保留着这种已经删除的节点,对存储造成浪费,但是如果没有那么多删除的话,这也不失为一个好方法。 另外二叉树有三种遍历方式:前序、中序和后序。这个比较简单,直接看下代码即可。...child successor.leftChild = node.leftChild; return true; } //获得要删除节点的后继节点(中序遍历的下一个节点
算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如果在列表a中查找元素t,先将列表a中间位置的项与查找关键字t比较,如果两者相等,则成功。...否则,将表分为前后两个子表 如果中间位置大于t,则进一步查找前一子表,否则,查找后一子表 重复上述过程 优劣: 时间复杂度为O(log2N),比较快 缺点就是必须是有序列表 排序算法: 冒泡排序 简介:...两两比较大小,如果不满足升序关系,则交换 过程:略 优劣:: 时间复杂度为O(N2),速度较慢 稳定 选择排序 简介:找出最小值,然后放入一个新的列表中 过程:略 优劣:: 时间复杂度为O(N2),速度较慢...稳定 插入排序法 简介:依次检查需要排序的列表,每次取出一个元素放入另一个排好序的列表中的适当位置。...i],将A[i]和A[j]互换 重复3~4步,直到i = j 优劣:: 平均情况时间复杂度为O(Nlog2N),比较快。
深度遍历分为三种:先序、中序和后序。其中先、中、后分别表示根结点查询的顺序。 即先序:根左右。中序:左根右。后序:左右根。 4. 深度遍历的重要思想就是递归。...但也可以不用递归实现,感兴趣的读者可以自己尝试实现 """ # 定义结点 class Node(object): """结点类""" def __init__(self, elem=-...self.preorder(node.lchild) self.preorder(node.rchild) def inorder(self, node): """中序遍历...链表的缺点在于查找慢,是O(n),所以用一个字典来存储链表中的结点,key为结点的值 4. 当我们要查找时,先通过字典来拿到结点。...第四点也就是为什么要使用循环链表的原因 """ 5、嵌套列表的扩展,如[1, 2, [3, [4, [5, 6]]]] 输出为 [1, 2, 3, 4, 5,6] # 第一种实现方式 # 递归实现压平嵌套列表
4.5 树 链表的插入和删除比较快,但是查找却比较慢,因为不管我们查找什么数据,都需要从链表的第一个数据项开始,遍历到找到所需数据项为止,这个查找也是平均需要比较N/2次。...O(logn),在有序的数据结构中是特别bug的,但是如何进行快速的排序,有如下常用的排序算法: 实际应用: ①、如何根据年龄给100W用户排序?...需要注意的是:布隆过滤器是在内存中的,如果机器重启,布隆过滤器就会被清空,防止网页重复爬取,需要持久化布隆过滤器,比如定时每半小时持久化一次。...④、我们拿这 k 个偏移位置,去倒排索引(index.bin)中,查找 k 个单词对应的包含它的网页编号列表。经过这一步查询之后,我们得到了 k 个网页编号列表。...经过这一系列查询,我们就得到了一组排好序的网页编号。我们拿着网页编号,去 doc_id.bin 文件中查找对应的网页链接,分页显示给用户就可以了。
Dim hashSet As New HashSet(Of String) ' 将列表中的元素添加到HashSet,重复的会被自动过滤 For Each item In list hashSet.Add...字典类不允许重复的键(Key),因此可以用来高效地去除一列或多列数据中的重复项。...以下是一个简单的示例,展示如何使用字典去除一个整数列表中的重复项: Imports System.Collections.Generic Module Module1 Sub Main()...' 创建一个空的字典 Dim numberDict As New Dictionary(Of Integer, Boolean) ' 遍历列表,尝试将每个数字作为键放入字典...列表 1 在VBA或VB.net中Split()与Replace()的用法 2 在VB.net中,List(of string())与List(of List(of string))有什么区别 3 VB.net
该函数根据function参数返回的结果是否为真来过滤list参数中的项,最后返回一个新列表,如下例所示: >>>a=[1,2,3,4,5,6,7] >>>b=filter(lambda x:x>5,...: for i in range(n): # 正序遍历,表示i的取值从0到n-1 for i in range(n,0,-1): # 倒序遍历,表示i的取值从n到1 dict字典 dict字典使用键...iterable, cmp=None, key=None, reverse=False) iterable:是可迭代类型,通常为一个集合; cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项...; key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则. reverse = True 表示降序 或者 reverse = False 表示升序,默认值为...如果一个数组中有很多重复元素,根据需求需要去除重复元素的话,可以使用set集合,类似于Java的HashSet。
关联容器 set 快速查找,不允许重复值 multiset 快速查找,允许重复值 map 一对多映射,基于关键字快速查找,不允许重复值 multimap 一对多映射,基于关键字快速查找,允许重复值...binary_search: 在有序序列中查找value,找到返回true。重载的版本实用指定的比较函数对象或函数指针来判断相等。...binary_search :在有序序列中查找 value ,如果找到返回 true 。重载的版本使用指定的比较函数对象或者函数指针来判断相等。 copy :复制序列。...set_union :构造一个排过序的序列,它包含两个序列中的所有的不重复元素。重载版本使用自定义的比较操作。 sort :以升序重新排列范围内的元素,重载版本使用了自定义的比较操作。...QList 它是个数组列表,结合了上面两种结构的优点,它支持随机存取,在它的任意一端插入和删除都是非常快速的并且对于千项以上的列表,在中间插入和删除也是很快的。
这种排列使它可以提供良好的查找插入性能及键序的迭代。在内部,QMap是作为一个跳越列表(skip-list)来实现执行的。...此外,K类型必须提供operator要使用这个操作符以提升键序顺序存储项。...QMap重载了value(const K &), 返回一个给定键多有值的QList列表。...QHash为它内部的哈希表自动分配最初的存储区域,并在有项被插入或者删除时重新划分所分配的存储区域的大小。...也可以通过调用reserve()或者squeeze()来指定或者压缩希望存储到哈希表中的项的数目,以进行性能调整。
领取专属 10元无门槛券
手把手带您无忧上云