HWA_09leetcode697数组的度
题目题解enumerate() 是Python内置函数用于同时获取可迭代对象的索引和值:在python中的作用classSolution:deffindShortestSubArray(self,nums:List[int])-int:#key为数组中的值#value为一个数组#数组的第一个元素为key出现的次数#数组的第二个元素为key第一次出现的位置#数组的第三个元素为key最后一次出现的位置mpdict()#遍历数组统计每个元素出现的次数、第⼀次出现的位置、最后⼀次出现的位置#把结果更新到mp当中fori,numinenumerate(nums):#如果哈希表 map 中已经存在当前这个元素的 key#说明在遇到 nums[i] 之前已经遇到了 nums[i] 这个值ifnuminmp:mp[num][0]1mp[num][2]ielse:mp[num][1,i,i]#更新这个元素出现的次数为 1. 更新这个元素第⼀次出现的位置为 i. 更新这个元素最后⼀次出现的位置为 imaxNumminLen0#记录元素出现的最多次数#记录符合要求的元素并且前后位置差最⼩的数的⻓度#temp[0] 为 key 出现的次数#如果这个值⽐ maxNum 更⼤那么数字需要更新forcount,left,rightinmp.values():ifmaxNumcount:maxNumcount#更新元素出现的最多次数minLenright-left1elifmaxNumcount:#如果这个值和 maxNum 相同那么 minLen 需要更新ifminLen(span:right-left1):#对⽐ minLen 和当前这个元素的前后位置差minLenspan#取较⼩值returnminLen