返回一个整数数组中最大子数组的和1

简介: 一、要求输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)二、思路:1、从第一个元素开始循环,在嵌套另一个循环,从每个元素开始,依次加上后边的元素2、当和大于最大值时,把和赋值给...

一、要求

输入一个整形数组,数组里有正数也有负数。

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值。要求时间复杂度为O(n)

二、思路:

1、从第一个元素开始循环,在嵌套另一个循环,从每个元素开始,依次加上后边的元素

2、当和大于最大值时,把和赋值给最大值,并记录此时的首元素的下标和尾元素的下标

三、实验代码:

package demo3;
public class Route {
    public static void main(String[] args) {
        int a[] = { 3, 8, -2, -5, -2 };
        int start = 0, end = 0;
        int maxnumber = a[0], s = a[0];
        for (int i = 0; i < a.length; i++) {
            s = a[i];
            if (s > maxnumber)
            {
                maxnumber = s;
                start = i;
                end = i;
            }
            for (int j = i + 1; j < a.length; j++)
            {
                s += a[j];
                if (s > maxnumber)
                {
                    maxnumber = s;
                    start = i;
                    end = j;
                }    
            }
        }
        System.out.print("该数组是:");
        for (int i = 0; i < a.length; i++)
        {
            System.out.print(a[i] + " ");
        }
        System.out.println();
        System.out.println("最大子数组的和是:" + maxnumber);
        System.out.print("最大子数组为:");
        for (int i = start; i <= end; i++)
        {
            System.out.print(a[i] + " ");
        }
    }
}

四、结果截图:

五、总结:

通过这次这个求所有子数组的和的最大值的要求,我发现我的逻辑思维还是没有跟不上,这道题主要在于怎么去想,然后才是实际下手编程,而且在编的过程中我们也要时刻想着这样写是为什么,下一步又改怎么写,只有这样,逻辑思维能力才能上去

 

目录
相关文章
|
7月前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
7月前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
|
存储 索引
信息学奥赛 如何在整数数组中寻找两数之和等于给定目标值
本文介绍了在整数数组中寻找两个数之和等于给定目标值的问题,提供了两种解法:暴力法和哈希表法。通过比较两种解法的时间复杂度,指出了哈希表法更为高效。
123 0
|
7月前
每日一题(づ ̄3 ̄)づ╭❤~(数字在升序数组中出现的次数,整数转换)
每日一题(づ ̄3 ̄)づ╭❤~(数字在升序数组中出现的次数,整数转换)
43 0
剑指offer 57. 数组中数值和下标相等的元素
剑指offer 57. 数组中数值和下标相等的元素
107 0
剑指offer 57. 数组中数值和下标相等的元素
|
搜索推荐
每日一题——两数之和(返回下标和返回数值两种情况)
每日一题——两数之和(返回下标和返回数值两种情况)
|
数据处理
整数数组中最大子数组的和(2)—— 处理二维数组
将二维转化为一维处理,当子矩阵的上下行确定时,把上下行中每一列的数据当作一个单元,确定左右列的过程就是求以列为单元的一维数组的子数组最大和的过程,这种方法大大提高了效率
94 0
整数数组中最大子数组的和(2)—— 处理二维数组
|
Java
求整数数组中最大子数组的和(1)
绝大部分同学都已经做出来了单维数组的 求数组中最大子数组的和, 但是你不妨试一试:把你的程序编译为可执行文件, 然后执行 例如 maxsum.exe 输出就是最大子数组的和, 上面的例子就应该输出 16.
114 0
求整数数组中最大子数组的和(1)
|
算法 Java C#
数组中数字出现的个数(剑指offer 56-I)
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
|
机器学习/深度学习 存储 算法
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素
【简单算法】1.两数之和,给定整数数组和目标值,找出数组中2数之和等于目标值的元素