思路:
  把每一种起点情况下的最大子数组之和S求出,存入S[]数组中,最后比较S[]中的最大值(i为数组的长度)存为MaxSum。而此时的起点-finalStart和终点-finalEnd也同样可以在求MaxSum的同时记录下来。
代码如下:
 1 package Test;
 2
 3 import java.util.Scanner;
 4
 5
 6 public class MaxSubArray {
 7     public static void main(String[] args) {
 8         Scanner scan = new Scanner(System.in);
 9
10
11
12         System.out.println("输入数组长度");
13         int n = scan.nextInt();
14         int[] a = new int[n];
15
16         System.out.println("输入数组元素");
17         for(int i = 0;i < n;i++)
18         {
19             a[i] = scan.nextInt();
20         }
21         scan.close();
22
23         int[] result = maxSub(a,a.length);
24         System.out.println("不连接成环的和最大的连续子数组:");
25         for(int i = result[0];i <= result[1];i++)
26         {
27             System.out.print(a[i] + "\t");
28         }
29         System.out.println("和为:" + result[2]);
30
31
32
33
34        35
36         int[] b = new int[2 * n - 1];
37         for(int i = 0;i < n - 1;i++)
38         {
39             b[i] = a[i];
40             b[n + i] = a[i];
41         }
42         b[n - 1] = a[n - 1];
43         int[] result2 = maxSub(b,n);
44         System.out.println("\n\n将数组连成环后的和最大的连续子数组:");
45         for(int i = result2[0];i <= result2[1];i++)
46         {
47             System.out.print(b[i] + "\t");
48         }
49         System.out.println("和为:" + result2[2]);
50
51
52     }
53
54
55
56
57
58     public static int[] maxSub(int[] a,int n)
59     {
60         int an = a.length;
61         int currectSum = a[0];
62         int currectStartIndex = 0;
63         int count = 1;
64         int[] result = new int[3];
65         result[0] = 0;
66         result[1] = 0;
67         result[2] = a[0];
68         for(int i = 1;i < an;i++)
69         {
70             if(currectSum <= 0)
71             {
72                 currectSum = a[i];
73                 currectStartIndex = i;
74                 count = 1;
75             }
76             else
77             {
78                 currectSum += a[i];
79                 count++;
80             }
81             if(currectSum > result[2])
82             {
83                 result[0] = currectStartIndex;
84                 result[1] = i;
85                 result[2] = currectSum;
86             }
87             if(count >= n)
88             {
89                 break;
90             }
91         }
92         return result;
93     }
94
95
96
97 }

转载于:https://www.cnblogs.com/wwd1505-1/p/6668223.html

查找数组连成环形的和最大的连续子数组相关推荐

  1. 算法学习-零子数组,最大连续子数组

    题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...

  2. 牛客网:乘积为正数的最长连续子数组

    1.非环形 注意审题!! 这里是求连续最长乘积为正数的长度是多少,我们维护两个长度,一个pos一个neg,pos代表到当前这个数为止的最长正数乘积,neg代表到当前这个数为止的最长负数乘积,我们对每个 ...

  3. python求最大连续子数组

    寻找最大子数组问题: 给定数组A:寻找A中的和最大的非空连续子数组.我们称这样的连续子数组为最大子数组(maximum subarray) 1.暴力求解:两个循环,时间复杂度为O(n^2) 2.用分治 ...

  4. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  5. 581. 最短无序连续子数组

    给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 请你找出符合题意的 最短 子数组,并输出它的长度. 示例 1: 输入:nums ...

  6. 数组中最大连续子数组和,最大连续子数组积,最大递增子序列

    最大连续子数组和: 递推式:curmax=max(a[i],curmax)    其中curmax是以i为结尾(意思必须取到a[i])和的最大值,其中每次循环比较curmax和已经保存最大值 最大连续 ...

  7. sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...

    题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...

  8. 【LeetCode】【HOT】581. 最短无序连续子数组

    [LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...

  9. Leetcode 581.最短无序连续子数组

    最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...

最新文章

  1. MEF程序设计指南七:使用目录(Catalog)动态装载xap与目录筛选(Filtered Catalog)...
  2. boost::test模块类属性工具的单元测试
  3. 典型案例道出“服务台”的价值
  4. 破解静态WEP KEY全过程
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 22丨页面推荐【难度中等】​
  6. 用模糊查询like语句时如果要查是否包含%字符串该如何写
  7. Java基础(一):简介和基础数据类型
  8. 手动批量下载ts文件并合并
  9. de4dot脱壳方法
  10. 菜鸟驿站是什么快递_菜鸟驿站是什么快递
  11. 驭见新知 | 给无人车戴上VR眼镜是种什么体验?
  12. 我国首部《密码法》来了!资深律师跟我说,他是这么看的...
  13. JVM中的-Xms -Xmx -XXnewSize -XXMaxnewSize -Xmn -XXPermSize -XXMaxPermSize区别介绍
  14. JAVA面试大全(持续更新中...)
  15. Y05 - 999、Python - 风变编程
  16. 微信自定义菜单的emoji图标
  17. 移动端js触摸touch详解(附带案例源码)
  18. 工业视觉需要时可抄的代码---持续更新
  19. php B KB MB TB
  20. 面试官:什么是字节码?它最大的优势是什么?

热门文章

  1. 六妙招让死钱变活钱[转]
  2. ajax jinja,在Flask中根据ajax response呈现Jinja模板
  3. key store是否创建_EKS-实践一 创建EKS集群
  4. Leetcode —— 208. 实现 Trie (前缀树)(Python)
  5. 计算机视觉模型、学习和推理
  6. 决策树模型(ID3/C4.5/CART)原理和底层代码解读 学习笔记
  7. C++/C--内存的四驱模型
  8. IPC--进程间通信一(管道)
  9. CAVLC编解码原理与流程
  10. clip许可证设备id与绑定设备不匹配_LINUX SPI通用字符设备模型介绍(SPI模块分析结束篇)...