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…

phppage类封装分页功能_PHP封装的page分页类定义与用法完整示例

本文实例讲述了PHP封装的page分页类定义与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;亲测有效&#xff0c;见下图>1. 测试实例test.phpheader("Content-Type: text/html; charsetutf-8");date_default_timezone_set("Asia/Shanghai")…

ms agent

Microsoft Agent是微软公司于1997年9月发布的一项代理软件开发技术&#xff0c;而后被集成到Internet Explorer 4.0 Plus及更高版本中&#xff0c;目前版本为2.0&#xff0c;支持简体中文。作为一种软件代理工具&#xff0c;Agent以其强大的交互功能、鲜明的人性特点、优美的操…

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

一、什么是“图”(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解析&…

python的指针跟c的区别_ctypes中的LP_x*指针和*p指针有什么区别?(以及与结构的奇怪交互)...

我很难理解Python ctypes中LP_*(例如LP_c_char)和*\u p(例如c_char_p)指针之间的区别。是否有文件区分它们&#xff1f;在我所读到的关于*\p指针的一些信息表明它们更好(以某种未指明的方式)&#xff0c;但是当我试图将它们用作结构字段时&#xff0c;我会得到奇怪的行为。例如…

爱斯基摩结构

“爱斯基摩结构”&#xff1a;狗拉雪橇是生活在北极圈的爱斯基摩人最重要的运载工具。怎样才能让狗多拉快跑&#xff1f;爱斯基摩人将狗分成两个层次&#xff0c;前面是一只领狗&#xff0c;后头有&#xff2e;只力狗。他们给领狗制造许多特权&#xff1a;它单独享用食品&#…

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

我们在使用浏览器浏览一些网页的时候&#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…

字符指针与字符串变量的转换

VC.NET中的String类是利用Unicode字符集编码来表示文本。Unicode字符集中每个字符(汉字、英文字母)都占2个字节&#xff0c;且其字符串是以2个连续的/0结尾的。 ANSI的ASCII字符集是最常见的字符集&#xff0c;常用于表示txt的文本文件。在ASCII字符集中英文占一个字节&#…

直方图均衡 视觉显著_视觉图像:对比度受限直方图均衡化CLAHE

CLAHE源码解析&#xff1a;ContrastLimitAHE .h&#xff1a;#ifndef _CONTRAST_LIMIT_AHE_H_#define _CONTRAST_LIMIT_AHE_H_#include "stdafx.h"#include using namespace std;class ContrastLimitAHE{public:ContrastLimitAHE();~ContrastLimitAHE();int m_nGridX;…

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…

一个使用指针的简单程序

一个使用指针的简单程序 /*一个使用指针的简单程序*/ #include <stdio.h> void main(){ int number 0; //一个出初始化为0的整形变量 int *pointer NULL; //一个可以指向int类型的指针 number 10; printf("\nnumber的地址为:%p",&number); //输出地址…

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…

Linux 下用C语言连接 sqlite

1.在 /home/ 新建一个文件夹名为 sqlite #cd /home #mkdir sqlite 2.编写C语言代码&#xff0c;名称为 sql.c&#xff0c;代码如下 // name&#xff1a; sql.c // This prog is used to test C/C API for sqlite3.It is very simple,ha! // Author : zieckey All rights rese…

c2c旅游springboot开源_重量级开源的商城和SpringBoot等项目看看有没有正好是你需要的...

1. JavaGuideGithub地址&#xff1a; 同下star: 18.2k介绍: 【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。2. mallGithub地址&#xff1a; 同下star: 3.3k介绍: mall项目是一套电商系统&#xff0c;包括前台商城系统及后台管理系统&#xff0c;基于Sp…