java 最大值 次大值_java 求最大、次大和第3大的值

我这里提供一种求最大、次大和第3大的值 的方法:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

//原题: 求最大、次大和第3大的值 (100 分)

//本题目要求读入n个整数,要求用最少的比较次数,输出它们的最大值、第2大的值和第3大的值。例如,对于13 13 1 10 34 10这6个数,最大值为34,第2大的值为13,第3大的值为10。

//

//

//输入样例:

//6

//13 13 1 10 34 10

//输出样例:

//34 13 10

int n;//输入个数

String max3,max1,max2;//第三大数 、第二大数 、第一大数

String m;

List list=new ArrayList();

System.out.println("请输入读入的整数个数n(n<=1000 000):");

Scanner s=new Scanner(System.in);

n=s.nextInt();

String[] arr = new String[n];

if(n>1000000){

System.out.println("n 大于1000 000 ");

}

if(n<3){

System.out.println("Invalid Input");

}

for(int i=0;i

m=s.next();

arr[i]=m;

}

int k=n;

for (int i=0; i

if(!list.contains(arr[i])) {

list.add(arr[i]);

}else{

k--;

}

}

String[] res = new String[k];

try {

list.toArray(res);

Arrays.sort(res);// 排序

} catch (Exception e) {

e.printStackTrace();

}

int size=res.length;

if(size==2){

System.out.println(" There is no third largest element");

}

else if(size==1){

System.out.println(" There is no second largest and third largest element");

}else{

max3=res[size-3];//第三大数

max2=res[size-2];//第二大数

max1=res[size-1];//第一大数

System.out.println(max1+" "+max2+" "+max3);

}

}

}

### 回答1: 您好,我明白您的问题。以下是一个漂亮的 Python 代码,用于找到给定列表中第二大和最大。 ``` def find_largest_numbers(numbers): largest = None second_largest = None for num in numbers: if largest is None or num > largest: second_largest = largest largest = num elif second_largest is None or num > second_largest: second_largest = num return (largest, second_largest) numbers = [3, 5, 9, 1, 8] largest, second_largest = find_largest_numbers(numbers) print("The largest number is:", largest) print("The second largest number is:", second_largest) ``` 此代码将输出: ``` The largest number is: 9 The second largest number is: 8 ``` 希望这个回答对您有帮助! ### 回答2: 假设我们有一个列表`lst`,包含了多个元素。我们想要找到列表中的第二大值最大值。以下是解决问题的一种方法: 首先,我们可以使用内置函数`max()`找到列表中的最大值。然后,我们将这个最大值从列表中移除,以便找到列表中的第二大值。 接下来,我们使用内置函数`max()`再次找到列表中的最大值,这时列表中的最大值实际上是第二大值。我们将这个赋给变量`second_max`。 最后,我们可以使用两个变量`max_value`和`second_max`来存储最大值第二大值。 下面是以代码形式表示以上解决方案的实现: ```python def find_second_max(lst): max_value = max(lst) lst.remove(max_value) second_max = max(lst) return (second_max, max_value) ``` 使用这个函数,我们可以找到给定列表中的第二大值最大值。 例如,如果我们有一个列表`[5, 10, 7, 2, 9]`,函数返回的结果将是`(9, 10)`,其中9是第二大值,10是最大值。 这是使用给定列表调用函数的示例代码: ```python lst = [5, 10, 7, 2, 9] result = find_second_max(lst) print("第二大值:", result[0]) print("最大值:", result[1]) ``` 输出将是: ``` 第二大值: 9 最大值: 10 ``` 以上是使用传入列表的第二大值最大值的简单方法。 ### 回答3: 假设传入的列表为lst。 为了找到列表中的最大值第二大的,我们可以遍历列表并使用两个变量来保存这两个。假设初始为最小负数。 首先,我们将最大值第二大的都设为列表的第一个元素,即max_value = lst[0] 和 second_max = lst[0]。 然后,我们遍历列表中的每个元素。 - 如果当前元素大于最大值,则将最大值更新为当前元素,同时将第二大的更新为之前的最大值。 - 如果当前元素不大于最大值,且大于第二大的,则将第二大的更新为当前元素。 最后,我们返回最大值第二大的。 以下是具体的代码实现: ``` def find_second_max(lst): max_value = lst[0] # 最大值 second_max = lst[0] # 第二大的 for num in lst: if num > max_value: second_max = max_value max_value = num elif num > second_max: second_max = num return max_value, second_max ``` 使用这个函数,我们可以得到传入列表的最大值第二大的的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值