首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA调用外部对象01:字典Dictionary(统计数据出现的次数)

前面说过了字典去除重复的使用方法,既然字典可以去除重复,那就可以统计数据出现的次数,现在我们来说说如何利用字典来做到这个。...统计数据出现的次数就是要使用到字典的Item值。...要统计数据出现的次数,因为字典是不会有重复的Key的,我们直接把Item的值加1就行了,这个时候是有2种情况: 不存在的Key:这个时候Item也不存在,也就是vbEmpty,CLng转换vbEmpty...的Item的值为0,所以+1正好是第一次出现 存在的Key:这个时候就好理解了,首先会取出这个Key的Item值,也就是前面已经出现过的次数,然后再+1,再更新这个Key的Item 所以直接更新Item

3.1K40

每日一题《剑指offer》数组篇之统计数字在排序数组中出现的次数

今日题目链接:数字在升序数组中出现的次数 数字在升序数组中出现的次数 难度:简单 描述 给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数 数据范围 0≤n...以题目中给的数组为例,一个比较自然的想法是用二分查找先找到一个3,由于要计算的是输出的次数,所以需要在找到的这个3的左右两边分别再进行顺序扫描,进而得到3的个数,这样最坏的情况下时间复杂度仍然是O(n)...因此,需要考虑怎样更好的利用二分查找算法,由于数组有序,如果知道了第一个k出现的位置和最后一个k出现的位置,那么我们就可以直接算出有多少个k。...因此将思路转化为通过二分查找求第一个和最后一个k出现的位置。...getNumberOfK(array,3); System.out.println("原数组:"+Arrays.toString(array)); System.out.println("3出现的次数

18040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ——非比较排序—计数排序

    统计相同元素出现次数 2. 根据统计的结果将序列回收到原来的序列中 找出最大和最小值: 首先遍历数组 a 一次,找到其中的最大值 max 和最小值 min。...计数数组的每个元素初始化为0,用于记录原数组中每个数值出现的次数。...统计每个元素的出现次数: 再次遍历原数组 a,对于数组中的每个元素 a[i],计算它与最小值的差值 a[i] - min,并将计数数组中对应索引的位置加1。...2.以int a[] = { 1,3,9,1,5,1,2,3,-5,-5,-2 };为例,手撕分析 3.代码实现 void CountSort(int* a, int n) {//找出最大和最小元素...for (int i = 0; i < n; i++) { count[a[i] - min]++;//min作为偏移量,然后再在对应数组位置++,统计该数字出现的次数 } // 排序

    10210

    数组面试题-大力出奇迹?

    文章目录 数组中重复的数字 二维数组中的查找 旋转数组的最小数字 调整数字顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 最小的k个数 连续子数组的最大和 数字序列中某一位的数字 把数组排成最小的数...和为s的数字 数组中数字出现的次数 相关推荐(面试专栏查看更多) 链表面试题(动图详解)-明明做出来了却为什么没有Offer?...题目:把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转。...题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。...解法二: 分析发现,数组中一个数字出现次数超过数组一半,也就是说其他所有数字出现次数加起来也没有它多。

    59710

    精读《算法题 - 最小覆盖子串》

    笔者想到的第三种方法是,还是需要一个计数器,但这个计数器 notCoverChar 是一个 Set 类型,记录了每个 char 是否未 ready,所谓 ready 即该 char 在当前窗口内出现的次数...>= 该 char 在 t 字符串中出现的次数。...同时还需要有 sCharMap、tCharMap 来记录两个字符串每个字符出现的次数,当右指针右移时,sCharMap 对应 char 计数增加,如果该 char 出现次数超过 t 该 char 出现次数...,就从 notCoverChar 中移除;当左指针右移时,sCharMap 对应 char 计数减少,如果该 char 出现次数低于 t 该 char 出现次数,该 char 重新放到 notCoverChar...总结 该题首先要排除动态规划,并根据连续子串特性第一时间想到滑动窗口可以覆盖到所有可能性。

    24040

    【OJ】Chapter 01 - (旋转数组的最小数字、数字在升序数组中出现的次数、错误的集合) 超详细讲解

    题目1:旋转数组的最小数字(JZ11) 题目链接:旋转数组的最小数字(JZ11) 题目描述: 有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾...你可以想一下,中轴的数字等于最右边的数字,我们就得不断缩小右边界范围,直至出现情况1和情况3.如果没有出现就说明,该值就为最小值。...如果中轴的数字小于最右边的数字,说明最小值可能是它,也可能是出现在中轴的左边。...(JZ53) 题目链接:数字在升序数组中出现的次数(JZ53) 题目描述: 给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数 数据范围:0≤n≤1000,0≤k...方法1(暴力法) 遍历一遍数组的元素,统计该数字出现的次数。

    9110

    TypeScript算法题实战——剑指 Offer篇(3)

    题目全部来源于力扣题库:《剑指 Offer(第 2 版)》,本章节包括的题目有:题目难度从上到下打印二叉树简单二叉搜索树的后序遍历序列简单二叉树中和为某一值的路径简单字符串的排列中等数组中出现次数超过一半的数字简单最小的...k个数中等连续子数组的最大和中等数字序列中某一位的数字中等把数组排成最小的数中等把数字翻译成字符串中等一、从上到下打印二叉树1.1、题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印...char[i]; char[i] = tmp; } } } dfs(0); return res;};五、数组中出现次数超过一半的数字...5.1、题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。...示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 25.2、题解使用Boyer-Moore 投票算法也叫摩尔投票法,维护一个候选众数 candidate 和它出现的次数 count

    8210

    Go 语言算法之美—线性排序

    桶排序 桶排序的原理理解起来很简单,首先根据要排序的数据的最大和最小值,划分若干个区间,假设排序数据中的最小值是 1 ,最大值是 25,那么可以划分为 5 个区间,每个区间分别是 0-5,5-10,10...bucketNum = 10 // 桶排序 func BucketSort(data []int) { if len(data) == 0 { return } // 寻找到最大值和最小值...可以参考下图来理解计数排序: 我再以一个简单的例子来讲解下计数排序的代码实现,假如有数据 4 2 2 8 3 3 1 最大值 max 为 8。...新建一个计数数组 count,count 大小为 max + 1,count 存储的是原数组每个值出现的次数,如下: 然后将 count 数组的值进行逐项累加,得到下面的结果: 最后进行最关键的一步...:= data[0] for _, v := range data { if max < v { max = v } } // 记录数值出现次数

    24110

    C#计数排序算法

    该算法的时间复杂度通常为O(n + k),其中n是待排序数组中的元素数量,k是数组中最大和最小元素的差值。...计数排序的基本原理计数排序的基本思想是:对于给定的一组数据,我们首先统计每个值出现的次数,然后根据这些计数来确定每个元素在排序后数组中的位置。算法的步骤如下:找出待排序数组中的最大值和最小值。...根据计数数组构建排序后的数组。计数排序的算法步骤确定最大值和最小值:首先遍历整个数组,找到最大值和最小值。创建计数数组:初始化一个长度为最大值和最小值之差的数组,并将其所有元素设置为0。...CountingSort方法首先找出数组中的最大值和最小值,然后创建并初始化计数数组,接着填充计数数组并累加计数,最后根据累加后的计数数组构建排序后的数组。...计数排序的性能分析计数排序的时间复杂度通常为O(n + k),其中n是待排序数组中的元素数量,k是数组中最大和最小元素的差值。

    2.3K00

    《剑指offer》专题—算法训练 day01

    文章目录 《剑指offer》专题—算法训练 day01 一、二维数组的查找 思路一 思路二 二、旋转数字的最小数字 思路一 思路二 三、奇偶互换 相对位置变化 相对位置不变 四、数组中出现次数超过一半的数字...min = array[i]; } } return min; } } 思路二 按照要求,要么是一个非递减排序的数组(最小值在最开始...),要么是一个旋转(最小值在中间某个地方) 而且,旋转之后有个特征,就是在遍历的时候,原始数组是非递减的,旋转之后,就有可能出现递减,引起递减的数字,就 是最小值 采用二分查找的方式,进行定位...思路一 思路一:定义map,使用次数>的映射关系,最后统计每个字符出现的次数 相关代码 import java.util.*; public class Solution {...return 0; } } 思路二 思路二: 排序,出现次数最多的数字,一定在中间位置。

    32920

    数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)

    数据结构排序——计数排序和排序总结 现在常见算法排序都已讲解完成,今天就再讲个计数排序。...再总结一下 1.计数排序 计数排序是一种非基于比较的排序算法,它通过统计数组中每个元素出现的次数,然后根据元素的值和出现次数重新构造数组,从而实现排序。...计数排序适用于元素范围比较小且元素非负的情况 步骤: 找出待排序的数组中最大和最小的元素:min和max 统计数组中每个值为 i 的元素出现的次数,存入新建数组 C 的第 i-min 项(c初始化时都是...,每遇到一次,对应下标上的数就++ 反向填充目标数组:利用新建的数组把数据覆盖回去 时间复杂度:O(n + range) void CountSort(int* a, int n) { //先找最大最小...它通过比较这三个位置的元素,找到其中介于最小和最大之间的值。 QuickSort函数:实现了快速排序的核心逻辑 选择中间值,并将其与数组的第一个元素交换,作为基准值。

    16610

    整理数据时的16个常用Excel函数

    1、Count 函数 作用:统计数字的个数 示例:使用公式生成A列的序号 =COUNT(A$1:A1)+1 注:大小不一的合并单元格填充公式,要使用Ctrl+Enter完成。 ?...5、Frequency函数 作用:统计数字区间的出现频率 示例:统计年龄在30~40之间的员工个数 =FREQUENCY(D2:D8,{40,29}) ?...11、Min函数 作用:返回一组数的最小值 示例1:=MIN(A1:A110) 示例2:财务部工资最小的员工是?...14、Trimmean函数 作用:返回一组数中的修剪平均值,即按一定比例除去最大和最小后计算平均值 示例:从评分中除去一个最大值和一个最小值后计算平均值。...16、Mode函数 作用:返回一组数中出现最多的数字 示例:统计A列出现次数最多的数字 =MODE(A2:A17) 注:如果出现次数有多个数字,可以用MODE.MULT函数 ?

    2.5K22

    【愚公系列】2021年11月 C#版 数据结构与算法解析(计数排序)

    1、计数排序(Counting Sort) 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。...作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。...1.1 算法描述 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素...1.2 动图演示 1.3 代码实现 /// /// 计数排序 /// public class Program { public static void Main(string[] args...当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法。

    19310

    【数据结构】排序算法---计数排序(动图演示)

    定义 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。...算法步骤 算法的步骤如下: (1)找出待排序的数组中最大和最小的元素 (2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项 (3)对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)...(4)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1 (统计相同元素出现次数,根据统计的结果将序列回收到原来的序列中) 3....性质 稳定性: 计数排序是一种稳定的排序算法。...count == NULL) { perror("malloc fail"); return; } memset(count, 0, sizeof(int) * range); // 统计次数

    9410

    小白学排序 | 十大经典排序算法(动图)

    不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。...选择排序 Selection Sort 表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。...最大堆 :最大堆中的最大元素在根结点(堆顶);堆中每个父节点的元素值都大于等于其子结点(如果子节点存在) 最小堆:最小堆中的最小元素出现在根结点(堆顶);堆中每个父节点的元素值都小于等于其子结点(如果子节点存在...计数排序不是基于比较的,所以是线性时间复杂度,但是速度快的代价就是对输入数据有限制要求:确定范围的整数 【算法描述】 这部分不怎么用看,直接看动图就理解了 找出待排序的数组中最大和最小的元素; 统计数组中每个值为...i的元素出现的次数,存入数组C的第i项; 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。

    3.7K31

    经验之谈,这16个Excel函数,几乎可以解决80%的数据统计工作!

    1、Count 函数 作用:统计数字的个数 示例:使用公式生成A列的序号 =COUNT(A$1:A1)+1 注:大小不一的合并单元格填充公式,要使用Ctrl+Enter完成。 ?...5、Frequency函数 作用:统计数字区间的出现频率 示例:统计年龄在30~40之间的员工个数 =FREQUENCY(D2:D8,{40,29}) ?...11、Min函数 作用:返回一组数的最小值 示例1:=MIN(A1:A110) 示例2:财务部工资最小的员工是?...14、Trimmean函数 作用:返回一组数中的修剪平均值,即按一定比例除去最大和最小后计算平均值 示例:从评分中除去一个最大值和一个最小值后计算平均值。...16、Mode函数 作用:返回一组数中出现最多的数字 示例:统计A列出现次数最多的数字 =MODE(A2:A17) 注:如果出现次数有多个数字,可以用MODE.MULT函数 ?

    93840

    计数排序(Counting Sort)

    文章目录 算法描述 动图演示 代码实现 算法分析 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。...计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。...算法描述 找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素...if (max < array[i]) { max = array[i]; } if (min > array[i]) { min = array[i]; } } // 最大最小元素之间范围...由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。

    56820

    C++|计数排序

    术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 :所有排序操作都在内存中完成; 外排序 :...计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 计数排序是一种稳定的排序算法。...计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。...算法描述 步骤1:找出待排序的数组中最大和最小的元素; 步骤2:统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 步骤3:对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加); 步骤...vector sortedList = countSort(randomList); sort(randomList.begin(), randomList.end()); printf("计数排序是否正确

    47720

    动画 | 什么是计数排序?

    我们可以有这样的思路,用空间去换时间,假设待排序数组a中n个数的取值范围是0到n,不妨设计一个长度为n+1的数组c,来统计数组a中每个元素出现的次数,存入到数组c中相应的位置。 ?...这样就可以按照数组c出现的次数直接输出排序结果了。 但是如果期望保证待排序列的稳定性,相同的元素前后的顺序位置不期望被改变。可以将数组c从第2个元素开始,进行每一项和前一项的累加。 ?...但是不确定出现相同次数的应该去哪个元素,例如7在第8个位置,8也在第8个位置,那第8个位置应该去哪个元素呢。...算法步骤: 找出待排序数组中的最大和最小的元素; 统计数组中每个值为x的元素出现的次数,存入到数组c中的下标为x的位置上; 从数组c中第2个元素开始,进行每一项和前一项的累加; 反向填充要输出的数组b,...所以就需要求最小值和最大值的差值来作为统计数组c的长度。 Code ?

    52030
    领券