Leetcode 2963. Count the Number of Good Partitions

1. 解题思路

这一题根据题意,显然我们可以将其先分为 n n n个原子partition,确保任意两个partition之间都不存在相同的元素,且每一个partition都不可再进一步切分。

此时,我们的答案总数就是 2 n − 1 2^{n-1} 2n1

因此,我们剩下的问题就是如何切分最小的原子partition了,而这个用一个滑动窗可即可快速得到,也没啥好多说的了。

2. 代码实现

给出python代码实现如下:

class Solution:
    def numberOfGoodPartitions(self, nums: List[int]) -> int:
        MOD = 10**9+7
        
        locs = defaultdict(list)
        for i, x in enumerate(nums):
            locs[x].append(i)
        cnt = 0
        max_loc = 0
        for i, x in enumerate(nums):
            if i > max_loc:
                cnt += 1
                max_loc = locs[x][-1]
            else:
                max_loc = max(max_loc, locs[x][-1])
        cnt += 1
        ans = pow(2, cnt-1, mod=MOD)
        return ans

提交代码评测得到:耗时912ms,占用内存45.1MB。

相关推荐

  1. LertCode263.丑数

    2023-12-11 15:18:02       21 阅读
  2. Leetcode 2983. Palindrome Rearrangement Queries

    2023-12-11 15:18:02       38 阅读
  3. Leetcode 2963. Count the Number of Good Partitions

    2023-12-11 15:18:02       44 阅读
  4. 思维题,LeetCode 2923. 找到冠军 I

    2023-12-11 15:18:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 15:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 15:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 15:18:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 15:18:02       20 阅读

热门阅读

  1. 《C++新经典设计模式》之第16章 桥接模式

    2023-12-11 15:18:02       27 阅读
  2. 每日一练的那个习题为什么显示无权限啊?

    2023-12-11 15:18:02       35 阅读
  3. 信创运维产业的发展与趋势:IT管理的新视角

    2023-12-11 15:18:02       31 阅读
  4. NVMe over Fabrics with SPDK with iRDMA总结 - 3

    2023-12-11 15:18:02       39 阅读
  5. [ES]ElasticSearch中时间日期的时区探讨

    2023-12-11 15:18:02       36 阅读
  6. vscode连接远程服务器失败

    2023-12-11 15:18:02       38 阅读
  7. qt 双缓冲机制

    2023-12-11 15:18:02       38 阅读
  8. 【自动化构建】自动化构建精品代码片段

    2023-12-11 15:18:02       36 阅读