笔试题:美团8.15第二题小团的旅行线路

本文介绍了一道美团笔试题的解决方案,题目要求判断旅行线路是否闭合。通过使用双端队列记录行程起点和终点,实现对每段行程是否形成闭环的判断。代码示例展示了如何读取输入并利用双端队列特性完成判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

美团笔试第二题:小团的旅行线路


在这里插入图片描述

题目理解

这个判断闭合行程主要是根据起点和终点是否是同一个地点,每行输入一段行程(该段的起点和终点),那么我们把每一段闭合行程的第一行的起点记录下来,根据每段行程后面输入的终点进行比较就可以判断是否是一段闭合行程,比如nanjin shanghai;shanghai nanjin;我们把第一段行程nanjin作为起点插入到双端队列的队头,然后shanghai从双端队列队尾,再把shanghai nanjin也从双端队列的队尾插入,这样就可以比较队头和队尾,判断该段行程是否闭合.这段行程闭合就将双端队列清空准备下一段行程的比较.在牛客看到大家提到从shanghai 到shanghai也算是一段闭合行程.但是正常理解他应该不是,可以加一个双端队列的长度比较,长度为2,就是这种情况.
直接上代码吧,代码很容易理解

package meituan;
import java.util.*;
import java.util.Scanner;
public class travel_number {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.print("Enter a travel length:"); 
	    int length=sc.nextInt();
	    //java中nextLine输入会直接按缓冲区读取,消除第一行输入的长度
		String xiaochudiyihang_shuru=sc.nextLine();
	    int count=0;
		Deque<String> deq=new LinkedList<String>();
		System.out.print("Enter a travel path:"); 
		for(int i=0;i<length;i++) {
			String cin_str=sc.nextLine();
			String[] StrArry=cin_str.split(" ");
			deq.add(StrArry[0]);
			deq.add(StrArry[1]);
			//System.out.println(deq.getFirst()+" "+deq.getLast()); 
			//java字符串的==比较不是比较内容相同就相等,而是指向对象相等才是,
			//如str1=nanjin str2=nanjin str1==str2会返回false,内容相同,但是对象不同,仍然是false
			//str1=shanghai str1=shanghai str1==str1 此时才是返回true,不知道为啥这样设计,真垃圾
			//Java要用str1.equals(str2)
            if(deq.getFirst().equals(deq.getLast())) {
            	count++;
                //当双端队列头部等于尾部时,表示一圈旅行,清空双端队列
            	deq.clear();
            }

		}
		System.out.println(count);
	}

}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值