子数组的最大和
来源:互联网 发布:微信开发教程 python 编辑:程序博客网 时间:2024/05/22 05:10
package com.shiyeqiang.test1;/** * 题目3:(求数组中子序列和的最大值!!) * 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值。 * 要求时间复杂度为O(n)。 例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 * * @author Shiyeqiang * */public class Test3 { public static void main(String[] args) { int[] arr = new int[] { 1, -2, 3, 10, -4, 7, 2, -5 }; System.out.println(fun(arr)); } /** * 采取动态规划的思想求最大递增子序列的和 算法思想:①:首先判断数组是否有意义; * ②:定义一个游标,将该游标与当前的最大值进行比较; * 如果:游标大,则将最大值更新为游标的取值; 如果游标的值为为负数,则将游标的值为0;; * ③:遍历完成以后,如果结果为为0,则说明最终结果应该是取得数组中的最大值! * * */ public static int fun(int[] arr) { // 1:首先判断数组是否有意义 if (arr.length == 0 || arr == null) { return 0; } //1, -2, 3, 10, -4, 7, 2, -5 int result = 0; //0 int temp = result; //0 for (int i = 0; i < arr.length; i++) { temp += arr[i]; //1,-1,3,13,9,16,18,13 if (temp < 0) { temp = 0; //0,则前面的将丢弃,因为是求得最大值的和的形式啊 } if (temp > result) { result = temp; //1,3,13,16,18 } } if (result == 0) { //则这个时候将是取得字符串的最大值 result = arr[0]; for (int i = 0; i < arr.length; i++) { if (result < arr[i]) { result = arr[i]; } } } return result; } }
0 0
- 子数组的最大和
- 子数组的最大和
- 子数组的最大和
- 最大子数组的和
- 最大子数组的和
- 子数组的最大乘积 子数组最大和
- 数组中最大和的子数组
- 数组中最大和的子数组
- 数组中最大和的子数组
- 子数组的最大和(数组)
- 首尾相连数组的最大子数组和
- 首尾相连数组的最大子数组和
- 首尾相连数组的最大子数组和
- 首尾相连数组的最大子数组和
- 数组中最大和的子数组
- 给定数组的子数组最大和
- 首尾相连数组的最大子数组和
- 数组连续子数组的和最大
- C#:MapControl基本操作代码整理
- Java Web项目新手入门
- Linux下RPM软件包的安装及卸载
- java自定义注解
- 友盟消息推送(1)
- 子数组的最大和
- 直击商城网站的百度算法规则
- java多态
- 什么是Provisioning Profile
- 生成myeclipse注册码的java代码
- Java 8 里的 Lambda
- leetcode: Valid Number
- 网页基础第2课之“css入门”
- 移动信息化在能源行业的最佳实践