综上所述,寻找下一个更大数在算法中具有广泛的应用和实际意义,它不仅可以提高算法的效率,还可以帮助我们更好地理解数据和解决问题。
1、寻找下一个更大数:
1-1、Python:
1.问题描述:
两个不重复的数组arr1和arr2,其中arr1是arr2的子集,在arr2的相应位置找到arr1所有元素的下一个更大数字.
arr1中数字x的下一个更大数字是arr2中x右边第1个更大的数字.如果它不存在,则为此数字返回-1.arr1和arr2中的所有数字都是唯一的,且长度尽量控制在1000以内.
2.问题示例:
输入arr1=[3,5,10,7],arr2=[3,5,6,8,10,11,24,7],输出[5,6,11,-1].对于数组arr1中的第1个元素3,在arr2中的下一个更大数字是5;对于数组arr1中的第2个元素5,在arr2中的下一个更大数字是6;
对于数组arr1中的第3个元素10,在arr2中的下一个更大数字是11;对于数组arr1中的第4个元素7,在arr2中没有下一个更大的元素,因此返回-1.
3.代码实现:
class Solution:
参数arr1: 整数数组
参数arr2: 整数数组
返回值: 整数数组
def nextGreaterElement(self, arr1, arr2):
answer = {}
stack = []
for x in arr2:
while len(stack) != 0 and stack[-1] < x: # len(stack)!=0代码可简写为stack,stack[-1]表示列表stack中最后一个元素.
answer[stack[-1]] = x
del stack[-1]
stack.append(x)
for x in stack:
answer[x] = -1
return [answer[x] for x in arr1]
主函数
if name == ‘main’:
solution =Solution()
arr1 = [3, 5, 10, 7]
arr2 = [3, 5, 6, 8, 10, 11, 24, 7]
print(“输入arr1:”, arr1)
print(“输入arr2:”, arr2)
print(“输出:”, solution.nextGreaterElement(arr1, arr2))
4.运行结果:
输入arr1: [3, 5, 10, 7]
输入arr2: [3, 5, 6, 8, 10, 11, 24, 7]
输出: [5, 6, 11, -1]
1-2、VBA:
Rem 自定义函数,功能:寻找下一个更大数
Function FindNextGreaterElements(arr1 As Variant, arr2 As Variant) As Variant
Dim dict As Object
Dim i As Long, j As Long
Dim nextGreater As Variant
Dim result() As Variant
'创建字典对象
Set dict = CreateObject(“Scripting.Dictionary”) '此处需要引用控件:Microsoft Scripting Runtime,即对应系统路径下的动态库:C:\Windows\SysWOW64\scrrun.dll
'遍历arr2,为每个元素找到下一个更大元素并存入字典
For i = LBound(arr2) To UBound(arr2) - 1
nextGreater = -1 '初始化nextGreater为-1,表示尚未找到
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)*
[外链图片转存中…(img-SNiMBr30-1712396029724)]