【leetcode】2900. 最长相邻不相等子序列 I

给定一个字符串数组 words ,和一个 二进制 数组 groups ,两个数组长度都是 n 。

如果 words 的一个 子序列 是交替的,那么对于序列中的任意两个连续字符串,它们在 groups 中相同索引的对应元素是 不同 的(也就是说,不能有连续的 0 或 1),

你需要从 words 中选出 最长交替子序列。

返回选出的子序列。如果有多个答案,返回 任意 一个。

注意:words 中的元素是不同的 。

示例 1:

输入:words = "e","a","b", groups = 0,0,1

输出:"e","b"

解释:一个可行的子序列是 0,2 ,因为 groups0 != groups2

所以一个可行的答案是 words\[0,words2] = "e","b"

另一个可行的子序列是 1,2 ,因为 groups1 != groups2

得到答案为 words\[1,words2] = "a","b"

这也是一个可行的答案。

符合题意的最长子序列的长度为 2 。

示例 2:

输入:words = "a","b","c","d", groups = 1,0,1,1

输出:"a","b","c"

解释:一个可行的子序列为 0,1,2 因为 groups0 != groups1 且 groups1 != groups2

所以一个可行的答案是 words\[0,words1,words2] = "a","b","c"

另一个可行的子序列为 0,1,3 因为 groups0 != groups1 且 groups1 != groups3

得到答案为 words\[0,words1,words3] = "a","b","d"

这也是一个可行的答案。

符合题意的最长子序列的长度为 3 。

代码
python 复制代码
class Solution(object):
    def getLongestSubsequence(self, words, groups):
        """
        :type words: List[str]
        :type groups: List[int]
        :rtype: List[str]
        """
        # words 字符串数组
        # groups 二进制 数组
        
        result = []
        result.append(words[0])
        pre = groups[0]
        for i in range(1, len(groups)):
            if groups[i] != pre:
                result.append(words[i])
                pre = groups[i]
        return result   
相关推荐
Epiphany.55620 分钟前
找到所有好字符串(记忆化搜索+KMP)(里面含KMP模板,用来入门)
算法
深圳市快瞳科技有限公司2 小时前
个体识别、行为解读、健康管理:多模态宠物AI大模型的场景化落地
人工智能·算法·计算机视觉·大模型·多模态·宠物·宠物ai识别
wangwangmoon_light2 小时前
1.1 灵神题单总结_滑动窗口与双指针
leetcode
liulilittle2 小时前
归一化:激活函数
人工智能·算法·机器学习·llm
Mem0rin4 小时前
前缀和:一维与二维
数据结构·算法
小趴蔡ha4 小时前
12 K-Means 聚类入门:没有标签如何发现数据分组
算法·kmeans·聚类
-dzk-4 小时前
【二叉树】LC 101.对称二叉树
算法·二叉树
白狐_7985 小时前
408数据结构第6章:图——核心考点、算法对比与AOE网真题
数据结构·算法
变量未定义~5 小时前
DFS之剪枝与优化-小猫爬山、 数独、 木棒
算法
Navigator_Z5 小时前
LeetCode //C - 1187. Make Array Strictly Increasing
c语言·算法·leetcode