程序查找在Python中第一个和最后一个值相同的子列表

假设我们有一个称为nums的数字列表,我们必须找到第一个元素和最后一个元素相同的子列表的数量。

因此,如果输入类似于nums = [10、15、13、10],则输出将为5,因为具有相同的第一个和最后一个元素的子列表是:[10],[15],[13],[ 10],[10、15、13、10]。

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

  • num_sublists:= nums的大小

  • d:=一个空的映射

  • 对于每n个数字,执行

    • d [n]:= d [n] + 1

  • 对于d中元素的每个数字k和对应的频率v,

    • num_sublists:= num_sublists +((v-1)*(v)/ 2的商)

    • 如果v与1不相同,则

  • 返回num_sublists

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

示例

from collections import defaultdict

class Solution:

   def solve(self, nums):

      num_sublists = len(nums)

      d = defaultdict(int)

      for n in nums:

         d[n] += 1

   

      for k,v in d.items():

         if v != 1:

            num_sublists += (v-1)*(v)//2

      return num_sublists

ob = Solution()nums = [10, 15, 13, 10]

print(ob.solve(nums))

输入值

[10, 15, 13, 10]

输出结果

5

以上是 程序查找在Python中第一个和最后一个值相同的子列表 的全部内容, 来源链接: utcz.com/z/326841.html

回到顶部