查找数组连成环形的和最大的连续子数组
代码如下:
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
查找数组连成环形的和最大的连续子数组相关推荐
- 算法学习-零子数组,最大连续子数组
题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...
- 牛客网:乘积为正数的最长连续子数组
1.非环形 注意审题!! 这里是求连续最长乘积为正数的长度是多少,我们维护两个长度,一个pos一个neg,pos代表到当前这个数为止的最长正数乘积,neg代表到当前这个数为止的最长负数乘积,我们对每个 ...
- python求最大连续子数组
寻找最大子数组问题: 给定数组A:寻找A中的和最大的非空连续子数组.我们称这样的连续子数组为最大子数组(maximum subarray) 1.暴力求解:两个循环,时间复杂度为O(n^2) 2.用分治 ...
- LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)
581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...
- 581. 最短无序连续子数组
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 请你找出符合题意的 最短 子数组,并输出它的长度. 示例 1: 输入:nums ...
- 数组中最大连续子数组和,最大连续子数组积,最大递增子序列
最大连续子数组和: 递推式:curmax=max(a[i],curmax) 其中curmax是以i为结尾(意思必须取到a[i])和的最大值,其中每次循环比较curmax和已经保存最大值 最大连续 ...
- sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...
题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...
- 【LeetCode】【HOT】581. 最短无序连续子数组
[LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...
- Leetcode 581.最短无序连续子数组
最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...
最新文章
- MEF程序设计指南七:使用目录(Catalog)动态装载xap与目录筛选(Filtered Catalog)...
- boost::test模块类属性工具的单元测试
- 典型案例道出“服务台”的价值
- 破解静态WEP KEY全过程
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 22丨页面推荐【难度中等】​
- 用模糊查询like语句时如果要查是否包含%字符串该如何写
- Java基础(一):简介和基础数据类型
- 手动批量下载ts文件并合并
- de4dot脱壳方法
- 菜鸟驿站是什么快递_菜鸟驿站是什么快递
- 驭见新知 | 给无人车戴上VR眼镜是种什么体验?
- 我国首部《密码法》来了!资深律师跟我说,他是这么看的...
- JVM中的-Xms -Xmx -XXnewSize -XXMaxnewSize -Xmn -XXPermSize -XXMaxPermSize区别介绍
- JAVA面试大全(持续更新中...)
- Y05 - 999、Python - 风变编程
- 微信自定义菜单的emoji图标
- 移动端js触摸touch详解(附带案例源码)
- 工业视觉需要时可抄的代码---持续更新
- php B KB MB TB
- 面试官:什么是字节码?它最大的优势是什么?
热门文章
- 六妙招让死钱变活钱[转]
- ajax jinja,在Flask中根据ajax response呈现Jinja模板
- key store是否创建_EKS-实践一 创建EKS集群
- Leetcode —— 208. 实现 Trie (前缀树)(Python)
- 计算机视觉模型、学习和推理
- 决策树模型(ID3/C4.5/CART)原理和底层代码解读 学习笔记
- C++/C--内存的四驱模型
- IPC--进程间通信一(管道)
- CAVLC编解码原理与流程
- clip许可证设备id与绑定设备不匹配_LINUX SPI通用字符设备模型介绍(SPI模块分析结束篇)...