求数组中的最小子数组,时间复杂度o(n),java
石家庄铁道大学 信1405-1 班 唐炳辉
题目:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。
设计思路:两个变量 ,一个记录当前并入的数组的值,另外一个记录所算过得最大的数组的值,当并入的值为小于零的时候,就没必要进行继续的相加了,因为再加也不可能比后边单独的数字大,所以,为负数就重新刷新位置,重置子数组的长度重新去找一个新的子数组
//石家庄铁道大学 信1405-1 班 唐炳辉:三藏
/**给定一个数组,求出这个数组中子数组的最大值,求出,要求时间复杂度为O(n)**/
package java_ketang;
import java.util.Scanner; public class MinArray { public static void main(String[] args) {
MinArray f = new MinArray(); //用户自己定义数组的长度并 自行输入一串数组 Scanner in=new Scanner(System.in);
System.out.print("请输入数组长度:");
int flase0g=in.nextInt();
//输入数组中的各个数值
System.out.print("请依次输入整数:");
int Arr[]=new int[flase0g];
for(int i=0;i<flase0g;i++)
{
Arr[i]=in.nextInt();
}
//输出用户输入的数组
System.out.print("您输入的数组为 ");
for(int i=0;i<flase0g;i++)
{
System.out.print(Arr[i]+" ") ;
} //输出最后的结果
f.findMaxArr(Arr);
} public void findMaxArr(int[] arr) {
int Arr = 0;//用来记录当前并入的数组的和
int MaxArr = 0;//用来记录之前的最大的数组和
int A = arr.length;
int Location1=0;
int Location2=0;//用来记录子数组的最后一个位置 int i; /**核心算法,两个变量 ,一个记录当前并入的数组的值,另外一个记录所算过得最大的数组的值
当并入的值为小于零的时候,就没必要进行继续的相加了,因为再加也不可能比后边单独
的数字大,所以,为负数就重新刷新位置,重置子数组的长度重新去找一个新的子数组**/
for ( i = 0; i < A; i++) {
Arr += arr[i];
if (Arr < 0) {
Arr = 0; }
if (Arr > MaxArr) {
MaxArr = Arr;
Location2=i;
;
}
} //用这个算法,通过最后的位置,和最大值来求出起始位置
for(i=Location2;i>=0;i--)
{
if(MaxArr-arr[i]==0)
{
Location1=i;//通过求出来的最大值和最后的那个位置,往前推移,找出起始位置
break;//跳出循环
} }
/**这种情况的出现当且仅当全部的数字都为负数的时候,
对所有的数字求一个最大值就是最大子数组**/
if (MaxArr == 0) {
for ( i = 0; i < A; i++) {
if (i == 0) {
MaxArr = arr[i];
}
if (arr[i] > MaxArr) {
MaxArr = arr[i];
}
}
}
//***************
System.out.println("子数组的长度为"+(Location2-Location1+1));
System.out.println("子数组是由第 "+(Location1+1)+" 个数到第 "+(Location2+1)+" 个数组成");
System.out.println("最大子数组的和是 "+MaxArr); }
}
验证截图



求数组中的最小子数组,时间复杂度o(n),java的更多相关文章
- Problem N: 求二维数组中的鞍点【数组】
Problem N: 求二维数组中的鞍点[数组] Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2764 Solved: 1728[Submit][S ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- 剑指Offer 1. 二维数组中的查找 (数组)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- C#中怎么判断一个数组中是否存在某个数组值
(1) 第一种方法: ,,}; ); // 这里的1就是你要查找的值 ) // 不存在 else // 存在 (2) 第二种方法: string[] strArr = {"a",& ...
- js 去除数组中的空值以及数组判断是否有重复数据
1.判断是否有重复数据 function isRepeat(array){ var hash = {}; for(var i in array) { if(array[i]!="" ...
- 《剑指offer》数组中出现次数超过数组长度一半的数字
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...
- 数组中只出现一次的数字(java实现)
问题描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 如果数组中只有一个数字出现奇数次,则将数组中所有的数字做异或可得该数字. 数组中有两 ...
- 【剑指offer】数组中出现次数超过数组长度一半的数字,C++实现
原创博文,转载请注明出处! # 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过 ...
- C#中判断一个数组中是否存在某个数组值 及相关
声明:reference:http://www.cnblogs.com/icebutterfly/archive/2010/06/22/1762738.html:http://blog.csdn.ne ...
随机推荐
- stdlib 头文件
stdlib 头文件即standard library标准库头文件.stdlib.h里面定义了五种类型.一些宏和通用工具函数. 类型例如size_t.wchar_t.div_t.ldiv_t和lldi ...
- getResource().getPath()返回的路径空格变成了 %20
this.getClass().getResource(“/”).getPath()使用者方法查看文件在服务器上的地址,但是地址中的空格会被转化为%20. 解决办法1: URI uri = new U ...
- 【crunch bang】论坛tint2配置讨论贴
地址: http://crunchbang.org/forums/viewtopic.php?id=3232
- C#下调用C++ SDK的编码常识
一组编码规范,通过C#调用C++ 自动封装的C# SDK,会发现面向对象思想的重要性. C++ SDK可以使用自动封装工具转换成C# SDK.但需要遵守如下规则: 1.如果需要对C#对象进行判断,则分 ...
- 如何通过类找到对应的jar包
ctrl+shift+T 然后输入对应类
- 一个C#序列化时循环引用的问题
以前一直没搞懂为什么C#在做对象序列化时(Json序列化,XML序列化等)有时候会出现循环引用的问题,下面写了个例子,类People有一个属性引用了类Child,而类Child也有一个属性引用了类Pe ...
- PHP memcached 扩展的安装
PHP memcached 扩展的安装 1.下载相关的源码包(软件版本自己选择) memcached-1.4.15 , http://memcached.org/ //Memcached服务端. me ...
- html插入视频
http://www.jb51.net/web/168548.html http://www.w3school.com.cn/html/html_media.asp
- Spring的beans标签下可以有其他标签
以前有对xsd(也就是schema文件)小做研究,有个小困惑,就是我们定义的元素只能使用定义的哪一些标签,比如<beans>下面就只能有自定义的哪一些,那为什么在引入<context ...
- Java 门面模式 浅析
Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用.在Tomcat的HttpServletReque ...