【LeetCode】【数组】题号:*697,相同度的最短连续子数组

every blog every motto: You will never know unless you try

0. 前言

1. 正文

1.1 题目

在这里插入图片描述

1.2 题解

python:

class Solution:
    def findShortestSubArray(self, nums: List[int]) -> int:
        # 数字和其对应出现的位置
        number_position = {
    
    }
        for i in range(len(nums)):
            if nums[i] not in number_position:
                number_position[nums[i]] = [i]
            else:
                number_position[nums[i]].append(i)
        # print(number_position)
        max_degree = 0  # 最大的度
        for i in number_position:
            # print(i)
            max_degree = max(max_degree, len(number_position[i]))

        # 子数组的最小长度
        min_length_degree = len(nums)
        # print('=====')
        for i in number_position:
            # print(i)
            if len(number_position[i]) == max_degree:
                min_length_degree = min(min_length_degree, number_position[i][-1] - number_position[i][0] + 1)
        # print(min_length_degree)
        return min_length_degree

1.3 结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39190382/article/details/114793140