21 谁是老二?

news/2025/2/26 7:02:36

21 谁是老二?

作者: Turbo时间限制: 1S章节: 一维数组

问题描述 :

一维数组中存储不超过100个整型数据,请找出其中第二大的元素,输出这些元素的值以及它们的下标。

注意,由于元素值可能相同,因此具有最大值的元素个数可能不只一个,第二大的元素是比它们小的那些元素。

输入说明 :

用户可输入多组数据,每组数据由两行组成:

第一行:数组元素的个数n

第二行:n个数组元素,由空格分隔

输出说明 :

对于每组输入,输出一行,包含第二大的元素的值以及它们的下标(都是整数),整数之间以空格分隔。如果有多个下标,则下标按从小到大的顺序输出。每行的开头与结尾无多余空格。

每组输出占一行。

如果不存在第二大的元素,则输出"none"(不包含引号)

输入范例 :

3
2 5 4
10
1 3 5 2 4 3 7 5 7 7
5
2 2 2 2 2

输出范例 :

4 2
5 2 7
none

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class test_21 {
    /**
     * 21 谁是老二?
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n;
        String s;
        while (sc.hasNext()) {
            StringBuilder builder = new StringBuilder();
            n =  sc.nextInt();
            sc.nextLine();
            s=sc.nextLine();
            String[] split = s.trim().split(" ");
            ArrayList<Integer> arrayList = new ArrayList<>(split.length);
            for (String str:split) {
                arrayList.add(Integer.valueOf(str));
            }
            Collections.sort(arrayList, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2-o1;
                }
            });
            //2 2 2 2 2
            if(arrayList.get(0).equals(arrayList.get(n-1))){
                System.out.println("none");
            }else{
                int num=0;
                for (int j = 1; j < arrayList.size(); j++) {
                    if(arrayList.get(j)<arrayList.get(0)){
                        num=arrayList.get(j);
                        break;
                    }
                }
                builder.append(num);
                for (int j = 0; j < n; j++) {
                    if(num==Integer.valueOf(split[j])){
                        builder.append(" ").append(j);
                    }
                }
                System.out.println(builder.toString());
            }
        }
    }
}


http://www.niftyadmin.cn/n/709927.html

相关文章

DijKstra算法——单源最短路径的理解

/*单元最短路径&#xff0c;这个算法的思想就是每次先找到离原点最近的点&#xff0c;然后以这个点为基础扩展&#xff0c; 然后比较原点到扩展点的距离与原点到最点的距离加上最近点的距离到扩展点的距离&#xff0c; 如果大于的话就需要跟新原来dis中的距离*/ #include<st…

【工具使用系列】关于 MATLAB 过程控制,你需要知道的事

2019独角兽企业重金招聘Python工程师标准>>> 如何进行过程控制 什么是过程控制 转载于:https://my.oschina.net/shamrocks/blog/1618301

20 整除的尾数

20 整除的尾数 作者: Turbo时间限制: 1S章节: 一维数组 问题描述 : 一个整数&#xff0c;只知道前几位为a&#xff0c;不知道末二位&#xff0c;被另一个整数b除尽了(即没有余数)&#xff0c;那么该数的末二位该是什么呢&#xff1f; 程序已完成主体框架,请完成以下函数get…

oracle重做日志文件硬盘坏掉解决方法

rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志&#xff0c;例如/u01/app/oracle/oradata/ORCL下的所有后缀为log的文件 sqlplus / as sysdba alter system switch logfile;    因为没有重做日志文件&#xff0c;会一直处于等待装填&…

对vector容器存储的理解

vector 容器中如果用尾插的方法放入vector 容器中&#xff0c;其实vector就相当于一个二维数组&#xff0c;当插入第一个输得时候就放在了vector 二维数组中的第一行&#xff0c;接下来每次输入一个就放在了下一行。 #include<vector>//定义vector容器头文件 #include&l…

38 求反数字字符串

38 求反数字字符串 作者: 张志寿时间限制: 1S章节: 字符串 问题描述 : 编写一个程序&#xff0c;将输入的数字串反转过来并输出。如&#xff1a;输入123&#xff0c;输出321。 输入说明 : 你的数据需要从标准输入设备&#xff08;通常为键盘&#xff09;中读入多组测试数据…

深入分析java线程池的实现原理

2019独角兽企业重金招聘Python工程师标准>>> 前言 线程是稀缺资源&#xff0c;如果被无限制的创建&#xff0c;不仅会消耗系统资源&#xff0c;还会降低系统的稳定性&#xff0c;合理的使用线程池对线程进行统一分配、调优和监控&#xff0c;有以下好处&#xff1a;…

C++——列举亲密数

&#xfeff;&#xfeff;描述&#xff1a; 两个整数a和b&#xff0c;如果a的不包含自身的因子之和等于b&#xff0c;并且b的不包含自身的因子和等于a&#xff0c;且a不等于b&#xff0c;则称a&#xff0c;b为一对亲密数。 找出满足a<10000且b<10000的全部亲密数对。 A p…