- Leetcode 3152. Special Array II
- 1. 解题思路
- 2. 代码实现
- 题目链接:3152. Special Array II
1. 解题思路
这一题的话思路上就是分堆,使用贪婪算法找到每一个元素所在的最长special子序列,然后判断query的首尾元素是不是属于同一个special子序列即可。
具体实现上的话可以使用DSU,不过也可以简化一下,直接将每一个special子序列用其首元素表示即可。
2. 代码实现
给出python代码实现如下:
class Solution:def isArraySpecial(self, nums: List[int], queries: List[List[int]]) -> List[bool]:n = len(nums)group = [i for i in range(n)]for i in range(n-1):if nums[i] % 2 != nums[i+1] % 2:group[i+1] = group[i]return [group[i] == group[j] for i, j in queries]
提交代码评测得到:耗时915ms,占用内存56.4MB。