在Python中查找具有等效频率的序列的程序

在Python中查找具有等效频率的序列的程序

假设我们有一个数字列表。我们必须找出一个数字序列的最长长度,使得当我们从该序列中删除一个数字时,每个数字都出现相同的次数。

因此,如果输入如下:numbers = [2, 4, 4, 7, 7, 6, 6],则输出将为7。

为了解决这个问题,我们将跟随以下步骤:

  • num_freq:=一个新映射

  • freq_freq:=一个新映射

  • diff_freq:=一个新的集合

  • result:= 1

  • 对于数字中的每个索引I和值num,请执行以下操作:

    • cur_freq:=num_freq[num]

    • num_freq[num]:=num_freq[num]+1

    • freq_freq[cur_freq]:=freq_freq[cur_freq]−1

    • freq_freq[cur_freq + 1]:=freq_freq[cur_freq + 1]+1

    • 将cur_freq + 1添加到diff_freq中

    • 如果cur_freq在diff_freq中,并且freq_freq[cur_freq]与0相同,则

      • 从diff_freq中删除cur_freq
    • 通过获取diff_freqs的元素创建一个新列表df_list

    • 如果df_list的大小与1相同,则

      • result:=i+1
    • 否则,当df_list的大小与2相同时,并且(任何一个 [| freq_freq[df_list[0]]-freq_freq[df_list[1]] |,freq_freq[df_list[0]],freq_freq[df_list[1]])等于1,和(任何一个 [| df_list[0]-df_list[1] |,df_list[0],df_list[1]])等于1),则
      • result:=i+1
  • 返回result

让我们看以下实现以更好地理解−

示例

from collections import defaultdict
class Solution:
   def solve(self, nums):
      num_freq = defaultdict(int)
      freq_freq = defaultdict(int)
      diff_freq = set()
      result = 1
      for i, num in enumerate(nums):
         cur_freq = num_freq[num]
         num_freq[num] += 1
         freq_freq[cur_freq] −= 1
         freq_freq[cur_freq + 1] += 1
         diff_freq.add(cur_freq + 1)
         if cur_freq in diff_freq and freq_freq[cur_freq] == 0:
            diff_freq.remove(cur_freq)
         df_list = list(diff_freq)
         if len(df_list) == 1:
            result = i + 1
         elif (
            len(df_list) == 2
            and any(
               x == 1
               for x in [
                  abs(freq_freq [df_list [0]]  -  freq_freq [df_list [1]]),
                  freq_freq [df_list [0]],
                  freq_freq [df_list [1]],
               ]
            )
            并且任何一个 [abs(df_list [0]  -  df_list [1]],df_list [0],df_list [1]])等于1
            ):
            result = i + 1
      return result
ob = Solution()
print(ob.solve([2, 4, 4, 7, 7, 6, 6]))

输入

numbers = [2, 4, 4, 7, 7, 6, 6]

输出

7

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程