MaxValueVO.java:
-
-
- import lombok.Getter;
- import lombok.Setter;
-
- import java.io.Serializable;
-
-
- @Getter
- @Setter
- public class MaxValueVO implements Serializable {
-
- private Integer max;
- private Integer secondMax;
-
- }
Test.java:
-
- import com.alibaba.fastjson.JSONObject;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- import java.util.UUID;
-
-
- public class Test {
-
-
- public static void main(String[] args) {
- Random random = new Random();
- List
nums = new ArrayList<>(); - for (int i = 0; i < 20; i++) {
- nums.add( random.nextInt( 100 ) );
- }
- querySecondMax( nums );
- }
-
- private static void querySecondMax(List
nums) { - MaxValueVO[] dp = new MaxValueVO[ nums.size() ];
- int size = nums.size();
- // dp[i][0] 存储的是最大的
- // dp[i][1] 存储的第二大的
- // 1 2 3
-
- for (int i = 0; i < size; i++) {
- int num = nums.get( i );
- MaxValueVO vo = new MaxValueVO();
- if( i==0 ){
- vo.setMax( num );
- vo.setSecondMax( num );
- }else {
- MaxValueVO vo_prev = dp[ i-1 ];
- if( num > vo_prev.getMax() ){
- vo.setMax( num );
- vo.setSecondMax( vo_prev.getMax() );
- }else {
- vo.setMax( vo_prev.getMax() );
- if( num > vo_prev.getSecondMax() ){
- vo.setSecondMax( num );
- }else {
- vo.setSecondMax( vo_prev.getSecondMax() );
- }
- }
- }
- dp[i] = vo;
- }
- System.out.println(JSONObject.toJSONString( nums ));
- MaxValueVO maxValue = dp[nums.size() - 1];
- System.out.println( "最大值:" + maxValue.getMax() );
- System.out.println( "第二大值:" + maxValue.getSecondMax() );
- }
- }
输出示例:
- [49,15,65,1,91,41,45,95,40,5,49,85,21,28,64,73,0,75,33,58]
- 最大值:95
- 第二大值:91