zoukankan      html  css  js  c++  java
  • [编程题] nk:[连续子数组的最大和]

    [编程题] nk:连续子数组的最大和

    image-20200729233039865

    输入输出

    思路

    方法:动态规划

    Java代码

    public class Solution {
        //方法1:动态规划
        public int FindGreatestSumOfSubArray1(int[] array) {
            //[6,-3,-2,7,-15,1,2,2]
            int[] dp = new int[array.length];
            dp[0] = array[0];  //dp中存储的首节点值
            int max = Integer.MIN_VALUE; //定义最小的值
            for(int i=1;i<array.length;i++){
                dp[i] = Math.max(array[i],dp[i-1]+array[i]); //dp[i]表示从某节点开始到i节点结束的最大的值的存储
               //上述一句的转移方程只是记录了每个i为止最大的值,我们最终还是需要遍历每个dp格子,拿出最大值。(这里在存入的时候就不断记录最大值)
                max = Math.max(max,dp[i]);
            }
            //返回最大值
            return max;
        }
        
        //方法2:遍历记录最大值
        public int FindGreatestSumOfSubArray(int[] array) {
            int sum = array[0]; //指定初始化sum是首个元素
            int max = sum;  //默认是最大值
            for(int i=1;i<array.length;i++){
                sum += array[i];
                
                if(sum<array[i]){
                    sum = array[i];
                }
                max = Math.max(max,sum);
            }
            return max;
        }
    }
    
  • 相关阅读:
    就业指导【黄春霞】
    百度面试题
    面试题08-多线程网络
    面试题07-内存管理
    面试题06-Foundation
    面试题05-UI控件
    面试题04-应用程序
    面试题03-第三方框架
    面试题02-客户端安全性和框架设计
    面试题01-数据存储
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13401358.html
Copyright © 2011-2022 走看看