当前位置: 首页 > 编程笔记 >

程序以Python找出等效频率的序列

沃阳飙
2023-03-14
本文向大家介绍程序以Python找出等效频率的序列,包括了程序以Python找出等效频率的序列的使用技巧和注意事项,需要的朋友参考一下

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

因此,如果输入像数字= [2、4、4、7、7、6、6],那么输出将为7。

为了解决这个问题,我们将遵循以下步骤-

  • num_freq:=新映射

  • freq_freq:=新映射

  • diff_freq:=一个新集合

  • 结果:= 1

  • 对于每个索引I和以num为单位的num值,请执行

    • 结果:= i + 1

    • 结果:= i + 1

    • 从diff_freq中删除cur_freq

    • 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相同,则

    • df_list:=通过获取diff_freqs的元素来创建新列表

    • 如果df_list的大小等于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时),则

    • 返回结果

    让我们看下面的实现以更好地理解-

    示例

    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]],
                   ]
                )
                and any(x == 1 for x in [abs(df_list[0] − df_list[1]), df_list[0], df_list[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

     类似资料:
    • 本文向大家介绍编写Golang程序以查找数组中元素的频率,包括了编写Golang程序以查找数组中元素的频率的使用技巧和注意事项,需要的朋友参考一下 例子 在输入数组中,arr = [2、4、6、7、8、1、2] 给定数组中2的频率为2 7的频率为1 3的频率为0。 解决这个问题的方法 步骤1:定义一个接受数组和数字的函数 步骤2:声明一个变量count = 0。 步骤3:迭代给定数组,如果在数组中

    • 我们可以使用cplexqp命令在matlab中使用Cplex查找问题的最小值。我正在docplex寻找替代方案。 Cplex vs Docplex

    • 我有一个大约英语单词及其初始频率的列表。我想写一个单词完成建议程序,它将返回一个最大单词列表,从给定前缀开始,按频率降序排序。数据结构还应该能够将一个单词的频率计数更新1(无论何时使用一个单词)。 例如,给定'engin'作为前缀,并且,它应该返回这样的列表-{17,“engine”}、{10,“engineer”}、{4,“engineering”} 的值应在[1,15]范围内。 如果按频率排序

    • 问题内容: Python中有什么方法可以按频率对列表进行排序? 例如, 上面的列表将按照其值的频率顺序进行排序,以创建以下列表,其中频率最高的项目位于最前面: 问题答案: 我认为这对于A来说将是一项好工作: 或者,您可以写第二行而不使用lambda: 如果您有多个具有相同频率的元素 并且 您希望这些元素保持分组状态,那么我们可以通过更改排序键以不仅包括计数,还包括 值 来做到这一点:

    • 本文向大家介绍提升Python程序运行效率的6个方法,包括了提升Python程序运行效率的6个方法的使用技巧和注意事项,需要的朋友参考一下 Python是一个很酷的语言,因为你可以在很短的时间内利用很少的代码做很多事情。不仅如此,它还能轻松地支持多任务,比如多进程等。Python批评者有时会说Python执行缓慢。本文将尝试介绍6个技巧,可加速你的Python应用程序。 1.让关键代码依赖于外部包

    • 问题内容: 我必须使用python计算文本中的单词频率。我想到将单词保留在字典中,并对每个单词进行计数。 现在,如果我必须根据出现次数对单词进行排序。我可以使用相同的词典来代替使用具有键作为计数和单词数组作为值的新词典吗? 问题答案: 您可以使用相同的字典: 第二行显示: 如果只需要排序的单词列表,请执行以下操作: 该行打印: