【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   
相关推荐
zwenqiyu几秒前
P5283 [十二省联考 2019] 异或粽子题解
c++·学习·算法
wayz11几秒前
Momentum:TSI(真实强度指数)技术指标详解
算法·金融·数据分析·量化交易·特征工程
万事大吉CC31 分钟前
Python 笔试输入模板总结
python·算法
lihao lihao40 分钟前
Linux信号
开发语言·c++·算法
大白话_NOI1 小时前
【洛谷 P2249】查找(深基 13. 例 1)+ 详细分析
c++·算法
吠品1 小时前
C++实现m行n列带边框的长方形输出
算法
智者知已应修善业1 小时前
【51单片机2个外部中断显示中断历时,初始化8左移3位共阳数码管】2024-6-6
c++·经验分享·笔记·算法·51单片机
西安邮电大学2 小时前
分治算法详细讲解
java·后端·其他·算法·面试
code bean2 小时前
平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解
算法
青梅橘子皮2 小时前
Linux---进程控制(2)(进程程序替换)
linux·c++·算法