LeetCode 1743. 从相邻元素对还原数组(拓扑排序)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。
好在你还记得 nums 中的每一对相邻元素

给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 adjacentPairs[i] = [ui, vi] 表示元素 ui 和 vi 在 nums 中相邻。

题目数据保证所有由元素 nums[i] 和 nums[i+1] 组成的相邻元素对都存在于 adjacentPairs 中,存在形式可能是 [nums[i], nums[i+1]] ,也可能是 [nums[i+1], nums[i]] 。
这些相邻元素对可以 按任意顺序 出现。

返回 原始数组 nums
如果存在多种解答,返回 其中任意一个 即可。

示例 1:
输入:adjacentPairs = [[2,1],[3,4],[3,2]]
输出:[1,2,3,4]
解释:数组的所有相邻元素对都在 adjacentPairs 中。
特别要注意的是,adjacentPairs[i] 只表示两个元素相邻,并不保证其 左-右 顺序。示例 2:
输入:adjacentPairs = [[4,-2],[1,4],[-3,1]]
输出:[-2,4,1,-3]
解释:数组中可能存在负数。
另一种解答是 [-3,1,4,-2] ,也会被视作正确答案。示例 3:
输入:adjacentPairs = [[100000,-100000]]
输出:[100000,-100000]提示:
nums.length == n
adjacentPairs.length == n - 1
adjacentPairs[i].length == 2
2 <= n <= 10^5
-10^5 <= nums[i], ui, vi <= 10^5
题目数据保证存在一些以 adjacentPairs 作为元素对的数组 nums

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/restore-the-array-from-adjacent-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 拓扑排序,出入度为 1 的是两端的数字
class Solution {
public:vector<int> restoreArray(vector<vector<int>>& P) {int n = P.size();vector<int> ans(n+1, -1);unordered_map<int, vector<int>> g;unordered_map<int,int> indegree;for(auto& p : P){g[p[0]].push_back(p[1]);g[p[1]].push_back(p[0]);indegree[p[0]]++;indegree[p[1]]++;}int start = INT_MIN, last = INT_MIN;for(auto ind : indegree){if(ind.second == 1 && start == INT_MIN)start = ind.first;else if(ind.second == 1 && last == INT_MIN)last = ind.first;}queue<int> q;q.push(start);int idx = 0;while(!q.empty()){int t = q.front();indegree[t]--;ans[idx++] = t;q.pop();for(int next : g[t]){if(--indegree[next] == 1)q.push(next);}}ans.back() = last; return ans;}
};

632 ms 115.7 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BP神经网络算法学习

BP&#xff08;Back Propagation&#xff09;网络是1986年由Rumelhart和McCelland为首的科学家小组提出&#xff0c;是一种按误差逆传播算法训练的多层前馈网络&#xff0c;是眼下应用最广泛的神经网络模型之中的一个。BP网络能学习和存贮大量的输入-输出模式映射关系&#xff…

无向图的深度优先遍历非递归_【数据结构图(一)】什么是图

一、什么是“图”(Graph) 表示“多对多”的关系包含一组顶点&#xff1a;通常用 V (Vertex) 表示顶点集合一组边&#xff1a;通常用 E (Edge) 表示边的集合无向边&#xff1a;(v, w) 有向边&#xff1a;不考虑重边和自回路二、抽象数据类型定义类型名称&#xff1a;图(Graph)数…

LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的正整数数组 candiesCount &#xff0c;其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。 同时给你一个二维数组 queries &#xff0c;其中 queries[i] [favoriteTypei, favoriteDayi, dailyCapi] 。 你按照如下…

wdcp-apache开启KeepAlive提高响应速度

因为我们的网站&#xff0c;媒体文件&#xff0c;js文件&#xff0c;css文件等都在同一个服务器上&#xff0c;并且&#xff0c;我们网站有非常多的图片&#xff0c;所以当建立好tcp链接之后&#xff0c;不应该马上关闭连接&#xff0c;因为每建立一次连接还要进行dns解析&…

如何将网页保存为图片_网页账号密码该如何保存?

我们在使用浏览器浏览一些网页的时候&#xff0c;需要输入我们的账号密码才能登陆&#xff0c;以保证安全。但是有时候浏览网页&#xff0c;不小心关掉了&#xff0c;重新打开时又要重新输入密码&#xff0c;这样会显得很繁琐。那么有什么办法能让网页记住我们的账号密码吗&…

scala学习-类与对象

类  /  对象 【《快学Scala》笔记】 一、类 1、Scala中的类是公有可见性的&#xff0c;且多个类可以包含在同一个源文件中&#xff1b; 1 class Counter{ 2 private var value 0  //类成员变量必须初始化&#xff0c;否则报错 3 4 def increment(){ //类中的…

LeetCode 1745. 回文串分割 IV(区间DP)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s &#xff0c;如果可以将它分割成三个 非空 回文子字符串&#xff0c;那么返回 true &#xff0c;否则返回 false 。 当一个字符串正着读和反着读是一模一样的&#xff0c;就称其为 回文字符串 。 示例 1&#xff1a; 输入&a…

5000并发的qps是多少_高并发架构设计

点击蓝字&#xff0c;关注我们01概述高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计保证系统能够同时并行处理很多请求。高并发一方面可以提高资源利用率&#xff0c;加快系统响应速度&#xff0c;但是同…

TensorFlow 2.0 - tf.data.Dataset 数据预处理 猫狗分类

文章目录1 tf.data.Dataset.from_tensor_slices() 数据集建立2. Dataset.map(f) 数据集预处理3. Dataset.prefetch() 并行处理4. for 循环获取数据5. 例子: 猫狗分类学习于&#xff1a;简单粗暴 TensorFlow 2 1 tf.data.Dataset.from_tensor_slices() 数据集建立 tf.data.Dat…

flutter 图解_【Flutter 专题】83 图解自定义 ACEWave 波浪 Widget (一)

和尚今天尝试一下绘制波浪的效果&#xff0c;虽然 pub 仓库中已经有成熟的插件&#xff0c;但和尚还是准备用之前学习的 Canvas 和 Animation 尝试自定义一个 ACEWave&#xff1b;1. 绘制曲线绘制波浪首先需要绘制曲线&#xff0c;采用 Canvas 绘制贝塞尔曲线&#xff1b;常用的…

c++ 不插入重复元素但也不排序_面试时写不出排序算法?看这篇就够了

小Hub领读&#xff1a;本文主要详细讲述常见的八种排序算法的思想、实现以及复杂度。包括冒泡排序、快速排序、插入排序、希尔排序等等&#xff0c;文章讲解非常详细&#xff01;作者&#xff1a;静默虚空https://juejin.im/post/5cb6b8f551882532c334bcf2本文已归档到&#xf…

LintCode 1816. 使结果不超过阈值的最小除数(二分查找)

文章目录1. 题目2. 解题1. 题目 描述 给你一个整数数组 nums 和一个正整数 threshold &#xff0c;你需要选择一个正整数作为除数&#xff0c;然后将数组里每个数都除以它&#xff0c;并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个…

马里兰大学calce电池循环测试数据集_千次循环,全程1.5V恒压,紫米新一代充电锂电池套装上手体验...

电池应该是每个家庭都会用到的东西&#xff0c;在现在智能家电飞迅发展的当下更是如此&#xff0c;比如智能门锁、智能门铃&#xff0c;都需要电池的供电&#xff0c;才能正常使用。而普通碱电池在电量耗尽后就无法循环使用&#xff0c;所以为了能节省成本减少电池对环境的污染…

TensorFlow 2.0 - TFRecord存储数据集、@tf.function图执行模式、tf.TensorArray、tf.config分配GPU

文章目录1. TFRecord 格式存储2. tf.function 高性能3. tf.TensorArray 支持计算图特性4. tf.config 分配GPU学习于&#xff1a;简单粗暴 TensorFlow 2 1. TFRecord 格式存储 使用该种格式&#xff0c;更高效地进行大规模的模型训练 import random import os import tensorfl…

c++ qt qlistwidget清空_Qt编写控件属性设计器12-用户属性

一、前言用户属性是后面新增加的一个功能&#xff0c;自定义控件如果采用的Q_PROPERTY修饰的属性&#xff0c;会自动识别到属性栏中&#xff0c;这个一般称为控件属性&#xff0c;在组态设计软件中&#xff0c;光有控件本身的控件属性还是不够的&#xff0c;毕竟这些属性仅仅是…

TensorFlow 2.0 - tf.saved_model.save 模型导出

文章目录1. tf.saved_model.save2. Keras API 模型导出学习于&#xff1a;简单粗暴 TensorFlow 2 1. tf.saved_model.save tf.train.Checkpoint 可以保存和恢复模型中参数的权值导出模型&#xff1a;包含参数的权值&#xff0c;计算图 无须源码即可再次运行模型&#xff0c;适…

机器人动力学与控制_力控制与位置控制的区别

1.背景介绍目前已经广泛落地的力控制方案是在机械臂末端安装多轴力矩传感器&#xff0c;用以检测机械臂对外界环境施加的力反馈值&#xff0c;并配合适当的控制策略&#xff0c;已达到控制机械臂与环境的作用力。这篇文章所要探讨的力控制&#xff08;上述力控制方案&#xff0…

基坑监测日报模板_基坑监测有多重要?实录基坑坍塌过程,不亲身经历,不知道现场有多恐怖!...

基坑整体坍塌不亲身经历&#xff0c;不知其恐怖▼前段时间&#xff0c;南宁绿地中央广场房地产项目D号地块(二期)基坑北侧约60米支护桩突然崩塌&#xff01;所幸无人伤亡。深基坑施工安全生产管理要点一、基坑开挖 1、 临边防护(1)基坑施工必须按要求进行&#xff0c;具体临边防…

[转]asp.net导出数据到Excel的三种方法

原文出处&#xff1a;asp.net导出数据到Excel的几种方法(1/3) 、asp.net导出数据到Excel的几种方法(2/3)、asp.net导出数据到Excel的几种方法(3/3) asp.net导出到Excel也是个老生常谈的问题&#xff0c;在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能…

LintCode 378. 将二叉树转换成双链表(非递归遍历)

文章目录1. 题目2. 解题1. 题目 将一个二叉树按照中序遍历转换成双向链表。 样例 样例 1&#xff1a; 输入:4/ \2 5/ \1 3 输出: 1<->2<->3<->4<->5样例 2&#xff1a; 输入:3/ \4 1输出:4<->3<->1https://www.lintcode.com/pro…