zoukankan      html  css  js  c++  java
  • 整数数组中最大子数组的和

      设计思想:一个数组中查找最大子数组,就是把从头开始进行累加,如果累加和大于0就需要接着加下一项,如果小于0则重新进行累加。累加完毕之后就需要对循环数组进行累加。

      加上一个正数会使原有的数变大,而加上一个负数会使原有的数变小,具体做法是依次遍历数组中的每一个数,并记下截至当前位置的最大和及当前和,如果当前和小于0就应该舍弃之,而从新的位置开始计算。另外对于一个既包含正数又包含负数的整型数组,其最大的子数组的和至少应该大于0。

      出现问题:没有弄清楚最大子数组的计算方法。

      程序源代码:

     1 package 最大子数组;
     2 
     3 public class judge {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7 
     8         int arrary[]={3,-2,3,-4,5,6,7,8};
     9         System.out.println(findMaxArray(arrary));
    10     }
    11 
    12     
    13     public static int findMaxArray(int[] array){
    14         if (array == null || array.length == 0) {
    15             return Integer.MIN_VALUE;
    16         }
    17         int maxSum = Integer.MIN_VALUE;
    18         int currentSum = 0;
    19         int j=0;
    20         for (int i = 0; i < j+array.length; i++) {
    21             if (currentSum < 0) {
    22                 currentSum = array[i%array.length];
    23                 j=i;
    24             }else {
    25                 currentSum += array[i%array.length];
    26             }
    27             maxSum = Math.max(maxSum, currentSum);
    28         }
    29         return maxSum;
    30     }
    31 }

      运行结果截图:

     

      总结:整个程序并不复杂,但是中间的计算方法才是困难的,这说明我的编程时间还是不够多,我还需要在多多努力。

  • 相关阅读:
    解决execjs 调用js 问题
    处理 get请求套字典问题
    js2py js逆向
    前端页面自适应
    newspaper抓新闻
    easygui
    pycharm 安装插件
    scrapy_代理使用
    SQLAlchemy 介绍,建表,及表的操作 (增 删 改 查)
    数据分析之pandas模块下
  • 原文地址:https://www.cnblogs.com/wangfengbin/p/6652869.html
Copyright © 2011-2022 走看看