剑指 Offer II 115. 重建序列

题目描述

给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列。还提供了一个 2D 整数数组 sequences ,其中 sequences[i] 是 nums 的子序列。
检查 nums 是否是唯一的最短 超序列 。最短 超序列 是 长度最短 的序列,并且所有序列 sequences[i] 都是它的子序列。对于给定的数组 sequences ,可能存在多个有效的 超序列 。

例如,对于 sequences = [[1,2],[1,3]] ,有两个最短的超序列 ,[1,2,3] 和 [1,3,2] 。
而对于 sequences = [[1,2],[1,3],[1,2,3]] ,唯一可能的最短 超序列 是 [1,2,3] 。[1,2,3,4] 是可能的超序列,但不是最短的。
如果 nums 是序列的唯一最短 超序列 ,则返回 true ,否则返回 false。
子序列 是一个可以通过从另一个序列中删除一些元素或不删除任何元素,而不改变其余元素的顺序的序列。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ur2n8P

思路

因为只有子序列中出现相邻的数对,才可以判断出nums中存在这样的数对,所以只需要对子序列进行一次遍历,对于出现的数对进行标记,最终检验n个数,如果都已被标记,就说明符合要求,否则就不符合。

代码

class Solution {
public:bool sequenceReconstruction(vector<int>& nums, vector<vector<int>>& sequences) {int n = nums.size();int s = sequences.size();int judge[10005]={0};int a[10005] = {0};for(int i=0;i<n;i++){a[nums[i]]=i;}for(int i=0;i<s;i++){int ss=sequences[i].size();for(int j=0;j<ss-1;j++){if(a[sequences[i][j+1]]-a[sequences[i][j]]==1)judge[a[sequences[i][j]]]=1;}}int ans=0;for(int i=0;i<n;i++)ans+=judge[i];return ans+1==n;  }
};

收获

  • 我这里对于偏序关系的映射是用了普通的一个数组,也可以使用unordered_map进行操作;
  • 本题还可以使用拓扑排序做,有时间补。

剑指 Offer II 115. 重建序列相关推荐

  1. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

  2. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和

    剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...

  3. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  4. 剑指 Offer II 027. 回文链表

    剑指 Offer II 027. 回文链表: 题目链接 :剑指 Offer II 027. 回文链表 题目:给定一个链表的 头节点 head ,请判断其是否为回文链表. 如果一个链表是回文,那么链表节 ...

  5. 剑指 Offer II 014. 字符串中的变位词

    剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...

  6. 剑指 Offer II 108. 单词演变

    链接:剑指 Offer II 108. 单词演变 题解: class Solution { public:int ladderLength(string beginWord, string endWo ...

  7. 剑指 Offer II 044. 二叉树每层的最大值

    链接:剑指 Offer II 044. 二叉树每层的最大值 题解: /*** Definition for a binary tree node.* struct TreeNode {* int va ...

  8. 剑指 Offer II 117. 相似的字符串

    链接:剑指 Offer II 117. 相似的字符串 题解: 1.建设图 2.bfs遍历 class Solution { public:int numSimilarGroups(vector< ...

  9. 剑指 Offer II 110. 所有路径

    链接: l剑指 Offer II 110. 所有路径 代码:代码没通过 class Solution { public:vector<vector<int>> allPaths ...

最新文章

  1. mac-address-table static命令的使用
  2. 大厂常见笔试题 滑动窗口内数的和
  3. 计算机基础知识考试模拟试题,计算机基础知识模拟试题及答案
  4. c语言猴子选大王指针,C语言描述怎么用循环队列实现猴子选大王
  5. 开源数据屏蔽 数据加密_数据屏蔽或更改行为信息
  6. 第一章 密码学和加密交易的介绍
  7. java中的强软弱虚_详解Java的四种引用——强软弱虚,颠覆你的认知!
  8. Python获取网络中的存活主机以及哪些主机是Linux
  9. 图像处理笔记——边缘检测算子
  10. excel如何根据身份证批量提取员工年龄?
  11. 进程间通信:通俗理解信号量方式
  12. 盘点2017 CES展会所有亮眼黑科技 (上)
  13. Photoshop保存图片时闪退
  14. 写技术文档需要注意什么
  15. 我那迷途知返的小羊-linux修复DNS解析问题
  16. php apc.dll,php_apc.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  17. GitHub上嵌入式相关的高星开源项目
  18. 如何修改文件的创建时间(回忆录)
  19. 如何免费使用cdn资源[棋牌游戏服务器配置]
  20. ENVI教程:InSAR技术,相位解缠

热门文章

  1. 【目标检测】基于yolov5的交通标志检测和识别(附代码和数据集)
  2. [转载] 乔布斯时代的三条设计原则,苹果现在已经忘了
  3. influxdb入门
  4. java什么样的类似adapter_一个10年Java程序员的年终总结,献给还在迷茫中的你
  5. windows 防止电脑远程断线
  6. 女神节特辑 | 5%的故事,看见女性开发者的力量
  7. java top命令_top 命令详解
  8. 数组去重的12种方法总结
  9. 智慧农业成为发展道路,充分发挥智能化,解放人力
  10. soa理念_我们的理念很简单