Excel-VBA-算法挑战-04-小于当前数字的个数

it2025-03-04  27

系统:Windows 7 软件:Excel 2016

本系列参考LeetCode一些题目,将其进行超级简化,用VBA来解

Part 1: 题目

有多少个小于当前数字的数字测试示例: arr1 = Array(5, 1, 7, 9, 3),结果为Array(2, 0, 3, 4, 1)arr2 = Array(16, 18, 15, 20),结果为Array(1, 2, 0, 3)

结果

Part 2: 解题逻辑

假设原数组为arr1新建一个数组arr,数组中每一个元素取值为小于当前数字的个数设置count初始值为0对数组arr1进行遍历,对每个元素将其与arr1的每一个元素进行比对若满足条件,小于当前数字,则count+1count为结果将count存入arr数组因为本题是求小于当前数字的个数,某元素本身不小于元素本身,所以无需将自身去除考虑

Part 3:代码

Sub main() arr1 = Array(5, 1, 7, 9, 3) arr11 = getCount(arr1) arr2 = Array(16, 18, 15, 20) arr21 = getCount(arr2) End Sub Function getCount(arr1) Dim arr() i = 0 For Each outer_ele In arr1 ReDim Preserve arr(0 To i) Count = 0 For Each inner_ele In arr1 If inner_ele < outer_ele Then Count = Count + 1 End If Next arr(i) = Count i = i + 1 Next getCount = arr End Function

代码截图

Part 4: 部分代码说明

ReDim Preserve arr(0 To i)改变数组的大小,并保留之前的数组元素,讲真VBA中的数组用起来十分不方便啊,若有更好的操作方法,欢迎告知本题本质就是两个循环,属于暴力解题法,欢迎提供更简单高效的方法
更多学习交流,可加小编微信号learningBin

更多精彩,请关注微信公众号 扫描二维码,关注本公众号

最新回复(0)