• 动态规划求集合的第二大值 java 实现


    MaxValueVO.java:
    1. import lombok.Getter;
    2. import lombok.Setter;
    3. import java.io.Serializable;
    4. @Getter
    5. @Setter
    6. public class MaxValueVO implements Serializable {
    7. private Integer max;
    8. private Integer secondMax;
    9. }

    Test.java:

    1. import com.alibaba.fastjson.JSONObject;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. import java.util.Random;
    5. import java.util.UUID;
    6. public class Test {
    7. public static void main(String[] args) {
    8. Random random = new Random();
    9. List nums = new ArrayList<>();
    10. for (int i = 0; i < 20; i++) {
    11. nums.add( random.nextInt( 100 ) );
    12. }
    13. querySecondMax( nums );
    14. }
    15. private static void querySecondMax(List nums) {
    16. MaxValueVO[] dp = new MaxValueVO[ nums.size() ];
    17. int size = nums.size();
    18. // dp[i][0] 存储的是最大的
    19. // dp[i][1] 存储的第二大的
    20. // 1 2 3
    21. for (int i = 0; i < size; i++) {
    22. int num = nums.get( i );
    23. MaxValueVO vo = new MaxValueVO();
    24. if( i==0 ){
    25. vo.setMax( num );
    26. vo.setSecondMax( num );
    27. }else {
    28. MaxValueVO vo_prev = dp[ i-1 ];
    29. if( num > vo_prev.getMax() ){
    30. vo.setMax( num );
    31. vo.setSecondMax( vo_prev.getMax() );
    32. }else {
    33. vo.setMax( vo_prev.getMax() );
    34. if( num > vo_prev.getSecondMax() ){
    35. vo.setSecondMax( num );
    36. }else {
    37. vo.setSecondMax( vo_prev.getSecondMax() );
    38. }
    39. }
    40. }
    41. dp[i] = vo;
    42. }
    43. System.out.println(JSONObject.toJSONString( nums ));
    44. MaxValueVO maxValue = dp[nums.size() - 1];
    45. System.out.println( "最大值:" + maxValue.getMax() );
    46. System.out.println( "第二大值:" + maxValue.getSecondMax() );
    47. }
    48. }

    输出示例:

    1. [49,15,65,1,91,41,45,95,40,5,49,85,21,28,64,73,0,75,33,58]
    2. 最大值:95
    3. 第二大值:91

  • 相关阅读:
    【LeetCode: 260. 只出现一次的数字 III | 位运算 | 哈希表】
    高级IO多路转接之select、poll、epoll
    13.Ansible.roles案例
    es6新增方法
    155. Min Stack
    netty系列之: 在netty中使用 tls 协议请求 DNS 服务器
    伯恩斯坦称多边形区块链是 Web3 之王
    组件化开发之如何封装组件-react
    Eureka注册中心
    【数据库系统概论】SQL是什么?它有什么特点?
  • 原文地址:https://blog.csdn.net/heshiyuan1406146854/article/details/134529422