问题描述

  “观今夜天象,知天下大事。”
  在三国杀中,诸葛亮的观星是一个强大的控场技能,效果是从牌堆顶翻起n张牌,任意改变顺序后放置到牌堆顶或牌堆底,能够有效控制下家的判定牌和手牌。
  Winmad在一盘三国杀中选了诸葛亮作为自己的武将。由于场上有n名玩家,他可以观到n张牌,每张牌都有一个点数x(1<=x<=2000000000)。作为一个完美主义者,他希望自己将牌改变顺序后能成为一个单调递增的序列;但是他又是一个懒人,希望用最少的操作次数达到自己的目的。一次操作就是把位置相邻的两张牌交换位置。Winmad迫切地想知道,最少操作次数是多少。

输入格式

  输入包括2行:
  第1行为1个正整数,表示n张牌。(1<=n<=500)
  第2行为n个用空格隔开的正整数,表示每张牌的点数。

输出格式

  输出只有一行,为最少操作次数。

样例输入

5
2 4 4 4 2

样例输出

3

数据规模和约定

  n<=500
  每张牌的点数x(1<=x<=2000000000)


解题思路:

先创建两个数组,一个是已排好序的最终数组,另一个是list形式的原始数组。每次循环从最终数组的最后一个元素倒着开始,找list数组中最后出现这个元素的位置。在while中将此元素逐一后移,直到该元素索引与最终索引一样,同时记录移动次数。由于所有的测试数据中都不存在两个一样的数据,所以上述方法可行,当测试数据中有重复的数据时,需要在每排好一个元素的位置后,都将list数组截掉已排好的元素,保证在找最后一次出现元素的位置不会被已排好的数据干扰。

java代码:

import java.io.*;
import java.util.*;public class Main {public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());String[] split = br.readLine().split(" ");List<Integer> list = new ArrayList<>();int []temp = new int[n];for(int i = 0; i < split.length;i++) {list.add(Integer.parseInt(split[i]));temp[i] = Integer.parseInt(split[i]);}Arrays.sort(temp);int ans = 0;for(int i = temp.length - 1;i >= 0;i--) {int num = temp[i];list = list.subList(0, i + 1);while(true) {int index = list.lastIndexOf(num);if(index == i)break;int t = list.get(index);list.set(index, list.get(index + 1));list.set(index + 1, t);ans++;}}System.out.println(ans);}
}

提交截图:

试题 算法训练 观星 java 题解 624相关推荐

  1. 试题 算法训练 黑色星期五(Java)

    试题 算法训练 黑色星期五(Java) 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是& ...

  2. 蓝桥试题 算法训练 报数 JAVA

    问题描述 现有n个同学站成一圈,顺时针编号1至n.从1号同学开始顺时针1/2报数,报到1的同学留在原地,报到2的同学退出圆圈,直到只剩一名同学为止.问最后剩下的同学编号. 输入格式 仅一行,一个正整数 ...

  3. java 蓝桥杯算法训练 水仙花(题解)

    试题 算法训练 水仙花 资源限制 时间限制:1.0s 内存限制:256.0MB 水仙花数 问题描述 判断给定的三位数是否 水仙花 数.所谓 水仙花 数是指其值等于它本身 每位数字立方和的数.例 153 ...

  4. java 蓝桥杯算法训练 整除问题(题解)

    试题 算法训练 整除问题 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 编写一个程序,输入三个正整数min.max和factor,然后对于min到max之间的每一个整数(包括min ...

  5. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  6. 试题 算法训练 翻转旋转变换

    试题 算法训练 翻转旋转变换 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 现在有一张n行m列的由" ...

  7. 试题 算法训练 预测身高

    试题 算法训练 预测身高  Lan   2020-03-13 19:04   54 人阅读  0 条评论 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述: 生理卫生老师在课堂上娓 ...

  8. 试题 算法训练 进击的青蛙

    问题描述 青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N.桥上的一些点有一些石子,这些点是无法跳上去的.青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端 ...

  9. 蓝桥杯 试题 算法训练 无聊的逗

    蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...

最新文章

  1. jboss eap 7.0_是时候抛弃Java 7 – JBoss EAP 6.4了!
  2. d0...while循环结构讲解
  3. kdj指标主要看哪个值_终于有人把KDJ指标总结全了,值得收藏
  4. linux查看都哪口状态,linux c 查看网口状态
  5. Transformer提效之路干货笔记——一文梳理各种魔改版本Transformer
  6. 【机器学习】回归、分类与聚类:三大方向剖解机器学习算法的优缺点(附Python和R实现)...
  7. MATLAB中的转置 和 复数的共轭转置
  8. Excel自动获取单词音标词义
  9. 【docker】三、Permission denied与sudo命令
  10. (大五人格分析)开放型人格的优势和职业发展
  11. 免费微信批量公众号采集文章方法
  12. 分享几个常用的地表温度数据集
  13. 2023 年腾讯云服务器租用价格表出炉(CPU、内存、带宽、系统盘)
  14. swing界面如何增加日历功能
  15. 微软对联服务器关闭了吗,不只对联,现在微软还能自动生成绝句
  16. Mybatis order by 动态传参出现的一个小bug
  17. Linux 的信号量
  18. 背包问题的多项式时间近似解
  19. 为什么BAT干不掉海康威视
  20. AV1 1.0 发布

热门文章

  1. 离开武汉的500万人去哪里了?别让他们流浪街头!
  2. Head First HTMLCSS
  3. 2021年日本钢材产量及进出口情况:日本粗钢产量7年来首次实现正增长[图]
  4. javascript动态生成网址二维码图片
  5. 计算机基础IE设置,怎么把ie设置为默认浏览器
  6. 侠士子眼中守护进程的疑问
  7. n行Python代码系列:两行代码实现彩色视频转换为灰度视频
  8. 证件照APP照片间隔排版的实现
  9. oracle nvl2函数延伸,NVL2(nvl2函数用法)
  10. tinyxml和rapidxml