Python程序:查找首尾元素相同的子列表


假设我们有一个名为 nums 的数字列表,我们需要找到其中首元素和尾元素相同的子列表的个数。

例如,如果输入为 nums = [10, 15, 13, 10],则输出为 5,因为首尾元素相同的子列表有:[10],[15],[13],[10],[10, 15, 13, 10]。

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

  • num_sublists := nums 的大小

  • d := 一个空字典

  • 对于 nums 中的每个数字 n,执行以下操作:

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

  • 对于 d 中每个数字 k 及其对应的频率 v,执行以下操作:

    • 如果 v 不等于 1,则

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

  • 返回 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

更新时间: 2020年10月7日

浏览量:135

开启你的 职业生涯

完成课程获得认证

立即开始
广告
© . All rights reserved.