1. 子数组的最大和 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如数组:arr[]={1, 2, 3, -2, 4, -3 } 最大子数组为 {1, 2, 3, -2, 4} 和为8. 解法1(时间复杂度O(N * N)空间复杂度O(1)) 求出所有的子数组的和,比较选择出最大值.利用双重循环就可以遍历到所有的子数组. public static void maxSum1(int arr[]) { int…
,, 在本周的课堂上,老师再一次提高了要求,将一维数组升级成为了二维数组,然后求出块状的连续子数组. 一开始还想着借鉴之前球一维数组的O(n)的算法,后来还是没有找到头绪,舍友讲了自己的办法,但是没有去仔细去问,也就不了了之,他的那个虽然是O(n四次方)的算法,但是好在实现起来比较简便一点. 后来想了想没有想出来,查看相关的资料,找到了和之前求一维数组类似的方法,就是直接将这个二维数组降维,将它压缩成一维数组,这样讲可能不太好理解,下面举一个例子,来阐释这个方法: 我们首先设置一个数组:,在这种…
目录 1 问题描述 2 解决方案 2.1 蛮力枚举法 2.2 动态规划法   1 问题描述 给定一个整数数组,数组里可能有正数.负数和零.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数组的和18. 2 解决方案 2.1 蛮力枚举法 package com.liuzhen.array_2; public class MaxSubA…
package findMax; /** * 连续子数组的最大和 * @author root * */ public class FindMax { static int[] data = {1,-2,3,10,-4,7,2,-5}; public static void main(String[] args) { // TODO Auto-generated method stub find(); } //分析数据规律 public static void find(){ int max =…
581. 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序. 说明 : 输入的数组长度范围在 [1, 10,000]. 输入的数组可能包含重复元素 ,所以升序的意思是<=. class Solution…
题目 连续子数组求和 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.(如果两个相同的答案,请返回其中任意一个) 样例 给定 [-3, 1, 3, -3, 4], 返回[1,4]. 解题 法一:直接暴力,时间复杂度O(N2),时间超时 public class Solution { /** * @param A an integer array * @return A list of integers includes the i…
要求: 要求数组从文件读取. 如果输入的数组很大,  并且有很多大的数字,  就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出. 另外, 如果输入文件的参数有错误, 这个程序应该能正常退出, 并显示相应的错误信息. 任何输入错误都不能导致你的程序崩溃. 解决方法及步骤: 1,先写入一个txt文件,再读取出来 2,通过循环测试生成的最大容量的数. 3,写入文件时控制数字的大小,就不会产生大数情况. 4,再加上上次的代码,计算最大连续子数组的和 代码: 这是随机生成一定量的数并…
package wodeshiyao; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.Random; public class asd{ /** * 产生随机…
求连续子数组的最大和 题目描述 给定一个整形数组,有正数也有负数,数组中连续一个或多个组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n); 测试用例 给定数组 {1,-2,3,10,-4,7,2,-5} 输出 18 思路分析 可以用动态规划的思想来完成: 用一个数组max[i]来存以第i个数字结尾的子数组的最大值 则max[i]有以下几种情况: 1.当i=0时,max[i] = data[i]; 例如max[0] = 1; 2.当max[i-1]<0时,max[i] = data…
问题 问题描述  给定n个整数(可能为负数)组成的数组,要求一个数组连续下标和的最大值,数组的元素可正.可负.可为零.  数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.  例如输入的数组为 -2 , 11 , -4 , 13 , -5 , -2时,最大的子数组为11,-4,13,因此最大子数组的和为20. 解题思路  很容易理解,当我们加上一个正数时,和会增加:当我们加上一个负数时,和会减少.如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃…