当前位置: 首页 > news >正文

【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 。

代码
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   

相关文章:

  • LVGL- 圆弧形状控件
  • 很啰嗦,再次总结 DOM
  • 历史数据分析——中证白酒
  • 阿里云服务器跑模型教程
  • 数学复习笔记 17
  • 数据结构*优先级队列(堆)
  • 剖析智能指针shared_ptr实现原理
  • 【软考 McCabe度量法】
  • 并发学习之synchronized,JVM内存图,线程基础知识
  • Hi3516DV500刷写固件
  • 392. Is Subsequence
  • linux线程基础
  • 摄影构图小节
  • Linux线程同步信号量
  • Vue-键盘事件
  • React学习(二)-变量
  • Centos7.9同步外网yum源至内网
  • 2025最新的软件测试面试大全(含答案+文档)
  • Java获取淘宝拍立淘API接口的详细指南
  • DeepSeek 大模型部署全指南:常见问题、优化策略与实战解决方案
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 上海交大曾小勤:科技传播不应停留于知识搬运,要做科学思维的播种机
  • 101岁陕西省军区原司令员冀廷璧逝世,曾参加百团大战
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查