map转string UI Automator npm安装 TensorRT Java Spring date elasticsearch matrix 逻辑端口 coldfusion swiftui arduino程序 mysql安装后怎么使用 pip环境变量配置 linux查看防火墙 matlab图像滤波 python相对路径怎么写 数据库学习 mysql查询 python输出中文 python怎么使用 python获取时间戳 python可视化编程 linuxsudo命令 flash实例教程 运行时错误1004 linux操作系统原理 修改tomcat端口 oem修改器 识别音乐的软件 自动答题软件 comsol下载 airdrop是什么 调试js 批处理for 全能音频转换通 上单艾克出装 ps光照效果 启用宏在哪里设置 js对象转字符串
当前位置: 首页 > 学习教程  > 编程语言

刷题01-美妙的约会

2020/7/24 11:18:21 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

题目描述

牛牛和妞妞在一天晚上决定一起去看一场情人节演唱会,可是由于这场演唱会实在太出名了,有很多情侣都来观看,牛牛和妞妞不小心被人流冲散了!
维持秩序的人决定,让大家排成一列,相邻两个进去的人(2k-1和2k,k为正整数)坐在相邻座位。但是现在的队伍乱糟糟的,有很多情侣都不在相邻位置。维持秩序的人同意让情侣们跟相邻的人交换位置,直到所有情侣都在2k-1和2k位置上为止。
但是维持秩序的人很没有耐心,所以需要最少的交换次数,你能帮情侣们算出这个次数吗?

输入描述

第一行一个整数n,表示一共有n对情侣,编号从1到n。同一对情侣编号相同。1<=n<=100
第二行2n个整数,ai表示编号为ai的情侣在第i个位置。1<=ai<=n

输出描述:

一个整数,代表最少交换次数。

示例1

输入

3
3 3 2 2 1 1

输出

0

示例2

输入

4
1 2 3 4 1 2 3 4

输出

6

参考解法:

import java.util.ArrayList;
import java.util.Scanner;
//参考大佬 @EnvyEvil 的思路(python),用Java实现
//以数组第一个元素ai[0]为基准,保存其值为first_item
//在ai中找到第二个与first_item相等的数,记录其坐标为 second_item_index
//在数组中删除这两个相等的元素
//因为每次都会删除首部元素,删除之后迭代前的第二个元素就会成为首个元素
//而且每次都以第一个元素ai[0]为基准,故 second_item_index 就是两个相同元素的距离
//结果为 res 累加上 second_item_index

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		ArrayList a = new ArrayList(n);
		for (int i = 0; i < n*2; i++) {
			a.add(sc.nextInt());
		}
		int count=0;
		for (int i = 1; i < a.size();i++) {
//			System.out.println(a.get(i));
			if(a.get(i)==a.get(0)) {
				count+=i-1;
				a.remove(i);
				a.remove(0);
				i=0;
			}
		}
		System.out.println(count);
	}
}

本文链接: http://www.dtmao.cc/news_show_50376.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?