奶牛排队 java 思维题

这篇具有很好参考价值的文章主要介绍了奶牛排队 java 思维题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

👨‍🏫 5133. 奶牛排队

题目描述

约翰的农场有 n n n 头奶牛,每一头奶牛都有一个正整数编号。

不同奶牛的编号不同。

现在,这 n n n 头牛按某种顺序排成一队,每头牛都拿出一张纸条写下了其前方相邻牛的编号以及其后方相邻牛的编号。

注意:

  • 这些奶牛并没有记下自己的编号。
  • 位于队首的奶牛前方没有牛,所以它在前方相邻牛处写下的是数字 0 0 0
  • 位于队尾的奶牛后方没有牛,所有它在后方相邻牛处写下的是数字 0 0 0

将所有奶牛写下的纸条收集起来并打乱顺序后交给你。

你的任务是根据这些纸条信息,推导出完整的奶牛队列。

输入格式

第一行包含整数 n n n,表示奶牛数量。

接下来 n n n 行,每行包含两个整数 a _ i , b _ i a\_i,b\_i a_i,b_i,表示其中一头奶牛写下的其前方相邻牛的编号以及其后方相邻牛的编号。

注意, a _ i a\_i a_i b _ i b\_i b_i 可能为 0 0 0,这表示该奶牛没有前方相邻牛或后方相邻牛。

输出格式

输出共一行, n n n 个整数,按照从前到后的顺序输出队列中每头奶牛的编号。

数据范围

5 5 5 个测试点满足 2 ≤ n ≤ 5 2 \le n \le 5 2n5
所有测试点满足 2 l e n ≤ 2 × 1 0 5 2 \\le n \le 2 \times 10^5 2len2×105 0 ≤ a _ i , b _ i ≤ 1 0 6 0 \le a\_i,b\_i \le 10^6 0a_i,b_i106

输入样例:
4
92 31
0 7
31 0
7 141
输出样例:
92 7 31 141

时间复杂度

O(n)文章来源地址https://www.toymoban.com/news/detail-633710.html

🍺 AC code
import java.util.Scanner;

public class Main
{
	static int N = 1000010;
	static int[] a = new int[N];
	static int[] b = new int[N];
	static int[] mp = new int[N];
	static int[] cnt = new int[N];// 记录每个数出现的次数,出现在前面 +1,出现在后面 -1

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int idx = 0;// idx 记录当前牛在 a[i] 时 的下标 i
		for (int i = 0; i < n; i++)
		{
			a[i] = sc.nextInt();
			b[i] = sc.nextInt();
			cnt[a[i]]++;
			cnt[b[i]]--;
			mp[a[i]] = i;
			if (a[i] == 0)// 说明是第一头牛
				idx = i;
		}
		int val = 0;// val记录当前的值
		for (int i = 0; i < N; i++)
			if (cnt[i] == 1)
				val = i;//

		for (int i = 0; i < n; i++)
		{
			System.out.print(val + " ");
			int nextVal = b[idx];// 当前牛的下标 idx 的 b(后一位)
			int nextIdx = mp[val];// 找到 (下一头牛的编号 == a[i]) 的 下标 i
			val = nextVal;
			idx = nextIdx;
		}
	}
}

到了这里,关于奶牛排队 java 思维题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言模拟银行排队叫号(顺序队)

    队列 是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队尾,而从队列中删除元素时则总是删除队头元素。 由于队列具有FIFO特性,因此队列通常用

    2024年02月09日
    浏览(38)
  • 每天一道C语言编程:排队买票

    有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互换,也算是一种新的排法。(M=10) 输入一行,M,N,K(其中M=N+K,M=10

    2024年02月17日
    浏览(43)
  • 【例6.1】排队接水 贪心算法

    【例6.1】排队接水 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n 个人的平均等待时间最小。 【输入】 共两行,第一行为n(1≤n≤1000);第二行分别表示第1 个人到第

    2024年02月03日
    浏览(36)
  • 【Java】2021 RoboCom 机器人开发者大赛-高职组(初赛)题解

    机器人小白要来 RoboCom 参赛了,在赛场中遇到人要打个招呼。请你帮它设置好打招呼的这句话:“ni ye lai can jia RoboCom a?”。 输入格式: 本题没有输入。 输出格式: 在一行中输出 ni ye lai can jia RoboCom a? 。 输入样例: 输出样例: Solution: 人脸识别是基于人的脸部特征信息进

    2024年02月12日
    浏览(40)
  • 【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解

    号称具有人工智能的机器人,至少应该能分辨出新人和老朋友,所以打招呼的时候应该能有所区别。本题就请你为这个人工智能机器人实现这个功能:当它遇到陌生人的时候,会说:“Hello X, how are you?”其中 X 是这个人的称呼;而当它再次遇到这个人的时候,会说:“Hi X!

    2024年02月12日
    浏览(41)
  • 【蓝桥杯冲冲冲】排队接水--贪心算法巩固 (≧∇≦)

    有 n n n 个人在一个水龙头前排队接水,假如每个人接水的时间为 T i T_i T i ​ ,请编程找出这 n n n 个人排队的一种顺序,使得 n n n 个人的平均等待时间最小。 第一行为一个整数 n n n 。 第二行 n n n 个整数,第 i i i 个整数 T i T_i T i ​ 表示第 i i i 个人的接水时间 T i T_i T i ​

    2024年01月24日
    浏览(45)
  • Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发

    1、开发工具和使用技术 MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。 2、实现功能 前台用户包含:注

    2023年04月26日
    浏览(84)
  • 【NJUPT】 数据结构与算法分析_银行排队系统

    银行排队系统 【问题描述】 试设计一个银行排队系统,模拟一般银行的日常对外营业服务,包括顾客到达、等待、办理业务及离开等事件。要求体现“先来先服务”的原则,将传统物理的多个顾客排队队列变为一个逻辑队列处理,顾客只需取票(即刻进队,排队),等待叫

    2024年02月04日
    浏览(55)
  • 网络流量调度的艺术:权重公平排队算法(WFQ)揭秘,全面解析!

    在计算机网络中,流量调度是一个重要的问题。为了有效地利用网络资源,保证各个应用程序获得公平的带宽分配,一种常用的流量调度算法——权重公平排队(Weighted Fair Queuing,简称WFQ)应运而生。本文将从基本概念、工作原理、优点和缺点等方面对WFQ进行详细解析。 2.

    2024年02月03日
    浏览(39)
  • 华为OD机试 - 排队游戏(Java & JS & Python)

    题目描述 新来的老师给班里的同学排一个队。 每个学生有一个影力值。 一些学生是刺头,不会听老师的话,自己选位置,非刺头同学在剩下的位置按照能力值从小到大排。 对于非刺头同学,如果发现他前面有能力值比自己高的同学,他不满程度就增加,增加的数量等于前面

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包