【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] ,因为 groups[0] != groups[2] 。

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

另一个可行的子序列是 [1,2] ,因为 groups[1] != groups[2] 。

得到答案为 [words[1],words[2]] = ["a","b"] 。

这也是一个可行的答案。

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

示例 2:

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

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

解释:一个可行的子序列为 [0,1,2] 因为 groups[0] != groups[1] 且 groups[1] != groups[2] 。

所以一个可行的答案是 [words[0],words[1],words[2]] = ["a","b","c"] 。

另一个可行的子序列为 [0,1,3] 因为 groups[0] != groups[1] 且 groups[1] != groups[3] 。

得到答案为 [words[0],words[1],words[3]] = ["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   
相关推荐
先做个垃圾出来………1 小时前
哈夫曼树(Huffman Tree)
数据结构·算法
phoenix@Capricornus2 小时前
反向传播算法——矩阵形式递推公式——ReLU传递函数
算法·机器学习·矩阵
Inverse1623 小时前
C语言_动态内存管理
c语言·数据结构·算法
数据与人工智能律师3 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链
wuqingshun3141593 小时前
蓝桥杯 16. 外卖店优先级
c++·算法·职场和发展·蓝桥杯·深度优先
YouQian7724 小时前
2025春训第十九场
算法
CodeJourney.4 小时前
基于MATLAB的生物量数据拟合模型研究
人工智能·爬虫·算法·matlab·信息可视化
Epiphany.5564 小时前
素数筛(欧拉筛算法)
c++·算法·图论
爱吃涮毛肚的肥肥(暂时吃不了版)4 小时前
项目班——0510——JSON网络封装
c++·算法·json
liang_20265 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结