【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   
相关推荐
地平线开发者2 小时前
模型量化入门:从浮点模型到低比特表示
算法
CoderYanger2 小时前
前端基础——JavaScript(基础语法)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展
枫叶林FYL2 小时前
【群体智能集群控制工程实践】第10章 无人舰队核心功能实现
大数据·人工智能·算法
不会就选b3 小时前
【无标题】
算法
m0_739312873 小时前
【自动驾驶和机器人控制】万向锁(Gimbal Lock)原理详解 + 和欧拉角 / 四元数 / SO(3)对比
算法·机器人·自动驾驶
Felven3 小时前
A. Eating Game
算法
血小板要健康4 小时前
队列 + 宽搜(BFS):二叉树层序遍历 算法总结
java·数据结构·笔记·算法·leetcode·宽度优先
Felven4 小时前
A. Riptide
算法·c 算法
m0_739312874 小时前
四元数、李群SO(3)/李代数so(3)的作用及应用场景
算法·机器人·自动驾驶
artificiali5 小时前
880 第4章多元
人工智能·算法