HDU2020——绝对值排序(java实现,使用map)

Question Description

Input

Output

Sample Input

Sample Output

解题思路简述:

在接收每一个数组的过程中,将负数及其绝对值以键值对的形式存入map(先绝对值,后负数)(因为题目有说“题目保证对于每一个测试实例,所有的数的绝对值都不相等。”)

然后数组中实际存储的是绝对值而不是负数

然后将数组通过冒泡排序降序排序

最后遍历数组,同时查询map中是否有相应键值对,有的话就将该项变为负数

然后打印_完成

源码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main{
    static void bubble_decending_order(int[] arr){
        boolean flag = true;
        for(int i =1;i<arr.length;++i){
            for(int j=0;j<arr.length-i;++j){
                if(arr[j]<arr[j+1]){
                    flag = false;
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            if(flag){
                break;
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            int count = sc.nextInt();
            if(count==0) break;
            int[] data = new int[count];
            Map<Integer,Integer> map = new HashMap<>();
            for(int i = 0;i<count;++i){
                data[i] = sc.nextInt();
                if(data[i]<0)
                    map.put(Math.abs(data[i]),data[i]);
                data[i] = Math.abs(data[i]);
            }
            bubble_decending_order(data);
            for(int i = 0;i<data.length;++i){
                if(map.containsKey(data[i])){
                    data[i] = map.get(data[i]);
                }
            }
            for(int i = 0;i<data.length;++i){
                System.out.print(data[i]);
                if(i+1!=data.length)
                    System.out.print(" ");
            }
            System.out.println();

        }
    }
}

hdoj已通过

希望对大家有所帮助

以上

原文地址:https://www.cnblogs.com/lavender-pansy/p/12129236.html

时间: 2024-10-12 03:49:05

HDU2020——绝对值排序(java实现,使用map)的相关文章

hdu 2020 绝对值排序 (java)

问题: 注意输入方式,可以直接用数组来装. 绝对值排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 51480    Accepted Submission(s): 24867 Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等.

[Java] 多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

比较Java原生的 3种Map的效率. 1.  TreeMap 2.  HashMap 3.  ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中)   10W 50W 100W 150W 0-1W 0-25W 0-50W Concurrent SkipListMap 62 ms 227 ms 433 ms 689ms 7 ms 80 ms 119 ms HashMap

Java中的Map List Set等集合类

Map List Set等集合类: 一.概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 --java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合.列表) │├ ArreyList     (Class 数组,随机访问,没有同步,线程不安全) │├ Vector        (Class  数组                   同步        线程全) │

java并发容器(Map、List、BlockingQueue)

转发: 大海巨浪 Java库本身就有多种线程安全的容器和同步工具,其中同步容器包括两部分:一个是Vector和Hashtable.另外还有JDK1.2中加入的同步包装类,这些类都是由Collections.synchronizedXXX工厂方法.同步容器都是线程安全的,但是对于复合操作,缺有些缺点: ① 迭代:在查觉到容器在迭代开始以后被修改,会抛出一个未检查异常ConcurrentModificationException,为了避免这个异常,需要在迭代期间,持有一个容器锁.但是锁的缺点也很明显

JAVA中关于Map的九大问题

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set..它们都可以通过构造方法或者addAll()方法来转换为List类型.下面代码就说明了如何从Map中构造ArrayList: // key listList keyList = new ArrayLis

【Java心得总结七】Java容器下——Map

我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角度对Java中强大的容器类库做了一个简单总结而第二篇专门针对容器类库中的Collection部分进行了总结.这篇博文将对容器类库中的Map部分进行一个整理总结. 一.初识Map Map:一组成对的“键值对”对象,允许你使用键来查找值.(注:Map其实是将键与值形成的二元组按照一维线性的方式组织起来,

Java中Set Map List 的区别

java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换) List按对象进入的顺序保存对象,不做排序或编辑操作.Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List).Map同样对每个元素保存一份,但这是基于"键"的,Ma

Java集合(List Map)

异常:try catch finally throw throws自定义异常:创建一个普通的Java类,让它继承Exception,RuntimeException Exception分为checked exception和runtime exception,checked exception表示需要强制去处理的异常,即throw异常之后,需要立即处理该异常,要么try-catch,要么抛给上一层去处理,否则会报错"Unhandled exception type MyException&quo

js 定义像java一样的map方便取值

js 定义像java一样的map方便取值. 百度有位大神说"js对象本身就是一种Map结构",这真是一段让人欢天喜地的代码. <script> //定义一个全局map var map = {}; var key0 = '0'; var key1 = '1'; map[key0] = '0-真实报文'; map[key1] = '1-虚拟报文'; //row 获取这行的值 ,index 获取索引值 function testJsMap(key){ //如果遍历map for(