要求:

  要求数组从文件读取。
  如果输入的数组很大,  并且有很多大的数字,  就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出。
  另外, 如果输入文件的参数有错误, 这个程序应该能正常退出, 并显示相应的错误信息。 任何输入错误都不能导致你的程序崩溃。

解决方法及步骤:

  1,先写入一个txt文件,再读取出来

  2,通过循环测试生成的最大容量的数。

  3,写入文件时控制数字的大小,就不会产生大数情况。

  4,再加上上次的代码,计算最大连续子数组的和

  

代码:

  这是随机生成一定量的数并且写入文件

package pri.xcl.test0314;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Random; public class addtxt { public static void main(String[] args) {
//文件写入
try {
int a= Integer.MAX_VALUE;
int b= Integer.MIN_VALUE;
System.out.println(a);
System.out.println(b);
BufferedWriter out = new BufferedWriter(new FileWriter("1.txt"));
//随机写入100个数
for(int i=0;i<30000000;i++) {
// int x=(int) (Math.random()*10);
int smallistNum=-1000;
int BiggestNum=1000; int x=getRandomNum(smallistNum, BiggestNum);
out.write(x+"\r\n");
}
out.close();
System.out.println("文件创建成功!");
} catch (IOException e) {
} } // 获得一个给定范围的随机整数
public static int getRandomNum(int smallistNum, int BiggestNum) {
Random random = new Random();
return (Math.abs(random.nextInt()) % (BiggestNum - smallistNum + 1))+ smallistNum;
}
}

  读取文件和求最大字数组之和

package pri.xcl.test0314;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList; public class test {
public static int[] StringToInt(String[] arrs){ int[] ints = new int[arrs.length]; for(int i=0;i<arrs.length;i++){ ints[i] = Integer.parseInt(arrs[i]); } return ints; } public static void main(String[] args) throws IOException {
//按数组读取文件
ArrayList<String> array;
String line;
int length;
try {
BufferedReader br=new BufferedReader(new FileReader("1.txt"));
array=new ArrayList<String>();
line="";
//按行读取文本中数据
while((line=br.readLine())!=null){
array.add(line);
}
br.close(); length=array.size();
String[] a1 = (String[])array.toArray(new String[length]);
int[] a=StringToInt(a1); // for(int i=0;i<a.length;i++) {
// System.out.println(a[i]);
// }
// int a[]=new int[length];
//
// //遍历输出数组内容
// for(int i=0;i<length;i++) {
// String s=array.get(i);
// a[i]=Integer.parseInt(s);
// System.out.println(a[i]);
// } //进行最大值计算 int sum=0;
int curr=0; //有负有正
for(int i=0;i<length;i++) {
curr=curr+a[i];
if(curr<0) {
curr=0;
}else {
if(sum<curr) {
sum=curr;
}else {
sum=sum;
}
}
} //若全是是负数
if(sum==0) {
int sum1=a[0];
for(int i=0;i<length-1;i++) {
if(sum1>a[i+1]) {
sum1=sum1;
}
else {
sum1=a[i+1];
}
}
sum=sum1;
} System.out.println("连续子数组的最大值为:"+sum); } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

运行结果

可以生成2000万的数。

找一个数组的最大和的连续子数组(时间复杂度 O(n))(二)的更多相关文章

  1. 找一个数组的最大和的连续子数组(时间复杂度 O(n))

    设计思想 一开始的思想是求出全部的情况,再分别比较大小,这种方法适用于有限个数组,不适用于输入数组长度和内容的情况. 但也试着做了 int a[]= {-1,2,6,-10}; int size=4; ...

  2. 剑指offer面试题31连续子数组的最大和

    一.题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果 ...

  3. 《剑指Offer》- 连续子数组的最大和或最小和

    前言 本文是<剑指Offer>系列(JavaScript版)的第一篇,题目是"连续子数组的最大和或最小和". 话不多说,开始"打怪"修炼... 一. ...

  4. 个人实战演练全过程——No.1 最大连续子数组求和

    之前的一次个人总结和一次单元测试入门学习是开启软件工程课程的前奏曲,也是热身,现在大家对于这门课程也有了初步的了解和认识,这次要开始真正的演奏了,要从头到尾完全靠自己的能力来解决一个问题,进行实战演练 ...

  5. Task 4 求数组的连续子数组的最大和(团队合作)

    小组成员:李敏.刘子晗 1.设计思想:由于已经做过这个题目,只要对之前的程序加上相应的测试和约束即可.我们两个人一起商议后,决定了程序的主框架和并列出了最终可以实现的功能.先要定义数组长度和上下限的变 ...

  6. lintcode循环数组之连续子数组求和

    v 题目:连续子数组求和 II 给定一个整数循环数组(头尾相接),请找出一个连续的子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.如果多个答案,请返回其中任意一个. ...

  7. python实现连续子数组的最大和

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  8. 剑指Offer - 九度1372 - 最大子向量和(连续子数组的最大和)

    剑指Offer - 九度1372 - 最大子向量和(连续子数组的最大和)2013-11-23 16:25 题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后, ...

  9. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

随机推荐

  1. git本机服务器配置(四):git+TortoiseGit+gitblit配置本机服务器

    1.配置本机git服务器 1.1 打开gitblit服务器,登录之前设置的服务页面localhost:1081 1.2.登录账号,账号在(三)中有提到. 1.3 打开用户中心 1.4 点击SSH Ke ...

  2. 基于注解的SpringMVC添加其他的Servlet、Filter以及Listener

    我们可以在AbstractAnnotationConfigDispatcherServletInitializer的实现类中重写onStartup(ServletContext servletCont ...

  3. 安装spring tool suite时遇到的问题

    首先在Eclipse的市场里没有找到,在官网下载安装包后不能安装,于是找了解决办法,跟安装suite的版本还有关系. 我下的是http://download.springsource.com/rele ...

  4. hyperledger fabric部署总结

    之前在有道云笔记上分享过,但想想还是搬到这里来吧,以后统一方便整理自己的知识进入正题.... 之前在调研 hyperledger fabric,其实部署说明官网都有,只是东西都是国外的照着操作也会遇到 ...

  5. C# 常用类型校验Validate

    using System.Text; using System.Text.RegularExpressions; namespace 落地页测试代码 { public class Validate { ...

  6. Zabbix(二)

    zabbix 监控第一台服务器 https://blog.51cto.com/5001660/2136303 一.搭建一台测试服务器 1.安装一台centos7操作系统 配置网络: vim /etc/ ...

  7. HashMap 学习 (JDK8)

    1.hashmap中hash函数的实现中,异或运算操作的结果是什么,为什么要做这样的异或运算 static final int hash(Object key) { int h; return (ke ...

  8. [linux]使用curl进行GET、POST和网页调试

    以前在win下开发的时候,习惯用的调试工具是谷歌自带控制台和postman,谷歌控制台比较方便,但不能对请求进行重发,post虽然很好用,但是感觉还是有点'大'.在linux下,其实完全没有那么麻烦, ...

  9. 使用云服务器实现Google搜索

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  10. pwn学习之二

    刚刚开始学习pwn,记录一下自己学习的过程. 今天get了第二道pwn题目的解答,做的题目是2017年TSCTF的easy fsb,通过这道题了解了一种漏洞和使用该漏洞获取shell的方法:即格式化字 ...