import java.util.List;
import java.util.ArrayList;
public class IntArray
{
//这是整型数组类(IntArray)的数据成员 ,即一个整型数组
public int[] data;
//此类的构造函数法
public IntArray(int[] a)
{
data = a;
}
//打印数组,每十个一行
public void printArray()
{
int i = 0;
for (int j: data)
{
System.out.println(" " + j);
i++;
if (i % 10 == 0)
System.out.println();
}
}
//给定一个整数数组,从中切出一个连续片段,保证其元素和最大
public ArraySession sliceMax()
{
int dataLength = this.data.length;//缓存数组长度
//判断数组内是否有正整数,如果没有返回最大的非正数
int flag = 0;
for (int i = 0; i < dataLength; ++i)
{
if (data[i] > 0)
break;
++flag;
}
if (flag == dataLength)
{
int max1 = data[0], index = 0;
for (int i = 0; i < dataLength; ++i)
{
if (data[i] >= max1)
{
max1 = data[i];
index = i;
}
}
return new ArraySession(index, index, max1);//全为非正数时,一定从这一句返回。
}
//下面是对数组内有正整数的情况考虑的
List<ArraySession> node = new ArrayList<ArraySession>();
for (int start = 0; start < dataLength; start++)
{
if (data[start] <= 0 || start != 0 && data[start - 1] > 0)
continue;//起始点是非正数的或者前一个数是正数的,肯定不是最大序列,继续下一轮
for (int end = start; end < dataLength; end++)
{
//System.out.println((data[end] <= 0 || end < dataLength -1 && data[end + 1] > 0));
if (data[end] <= 0 || end < dataLength -1 && data[end + 1] > 0)//先判断这个数是否为非正,再看下一个是否为正
continue;//终止点是非正数的或者 下一个点是正数的,肯定不是最大序列,继续下一轮
int sum = 0;
for (int k = start; k <= end; k++)
{
sum = sum + data[k];
}
//System.out.println(start+"---"+end+"---sum:"+sum);
node.add(new ArraySession(start, end, sum));
}
}
int max2 = node.get(0).sum;
ArraySession result=null;
for(ArraySession i:node)
{
if (max2 <= i.sum)//此处的等于很重要
{
max2 = i.sum;
result = i;
}
}
return result;
}
}
public class ArraySession
{
public int start;
public int end;
public int sum;
//构造函数
public ArraySession(int start, int end, int sum)
{
this.start = start;
this.end = end;
this.sum = sum;
}
//打印此段的基本信息
public void sessionPrint()
{
System.out.println("此段的开端索引值为:start="+start);
System.out.println("此段的结尾索引值为:end="+end);
System.out.println("此段的元素之和为:sum="+sum);
}
}
public class MainClass
{
//主函数 ,程序的入口点 ,此类主要用作调试函数
public static void main(String[] args)
{
//int[] array ={ -1, 3, -1, -2, 1, -1, 5, -6,-7, -8 };
//new IntArray(new Mathlet().arrayMultiMax(array)).printArray();
//Console.WriteLine(new Mathlet().triFibonacci(BasicFunctions.intInput("请输入一个整数")));
//Console.ReadKey();
//new ArraySession(1, 2, 3).sessionPrint();
int[] array = { 1, -7, 0, 2, -3, 4, -2, 6, -7, -8 };
new IntArray(array).sliceMax().sessionPrint();
}
}
注:本代码是本人的java改进版,源代码为C#的 参考 牟盖东 先生的!
分享到:
相关推荐
【淘宝笔试真题2010】:这个标题暗示了我们即将探讨的是2010年淘宝公司进行的笔试题目,这些题目可能涵盖了信息技术、电子商务、互联网运营等多个方面。淘宝作为中国最大的电子商务平台,其笔试题目往往反映了企业对...
根据给定的文件信息,我们将围绕“淘宝2011年求职应聘指南(笔试真题 面试经验)”这一主题展开详细的知识点解析。虽然提供的内容较为有限,但我们可以从标题、描述以及标签中推测出一些重要的知识点,并对其进行...
淘宝作为中国知名的电商平台,其技术类笔试题涵盖了广泛的IT知识领域,主要针对Java和C++等编程语言。这些题目旨在评估应聘者的编程能力、算法理解、数据结构掌握以及问题解决技巧。通过研究这些题目,求职者可以更...
【淘宝校园招聘笔试试题解析】 1. **Java计算武侠花名出处数量** 这是一道编程题,要求使用Java编写程序统计武侠花名的出处。首先,我们需要读取文本文件,文件中包含了花名及其出处。可以使用Java的`Scanner`类来...
【淘宝2017实习招聘笔试题解析】 本次笔试题主要涵盖了计算机科学和技术的基础知识,包括网络、数据结构、算法、编程以及逻辑推理等。以下是对各题目的详细解析: 1. **网络基础**:在局域网中,两台千兆网卡的...
通过解答这些笔试题,求职者不仅可以检验自己的技术水平,还能提升分析问题和解决问题的能力。同时,这些题目也暗示了阿里巴巴对员工的期望,即具备扎实的理论基础,良好的问题解决技巧,以及不断学习和适应新技术的...
【淘宝2017校园招聘清华笔试试题解析】 1. **DB、DBS、DBMS 关系**: 数据库(DB)是用于存储和管理数据的系统,它可以是电子表格、文件或其他数据结构。数据库管理系统(DBMS)是一组软件,用于创建、维护和管理...
1. **编程能力**:阿里巴巴笔试通常会包含编程题,主要考察应聘者的算法基础、数据结构理解和实际编程能力。常见的题目类型有动态规划、排序算法、查找算法、字符串处理等。例如,你可能会遇到要求实现快速排序、二...
文档“淘宝2011实习招聘笔试.doc”包含了一些IT基础知识和编程问题,主要涉及到网络、数据结构、算法和编程技巧。以下是对这些知识点的详细解释: 1. **网络速度计算**: 题目中提到的千兆网卡在局域网中的数据...
在准备淘宝笔试的过程中,除了深入学习以上知识点,还要通过模拟题和实战练习来提升解题速度和准确率。同时,关注行业动态,了解淘宝最新的发展和政策变化,可以使你的答案更具时效性和深度。最后,保持积极的心态,...
总结来说,腾讯、创新工场、淘宝等知名IT公司所提出的面试题,不仅考查应聘者对基础算法和编程技能的掌握,也着重考察了在实际问题中灵活运用知识、解决复杂问题的能力。此外,能够快速学习新技术、应用到实际中,...
《淘宝网技术类笔试知识点详解》 在互联网行业中,淘宝网作为国内领先的电子商务平台,其技术面试和笔试环节对候选人的技术能力要求极高。这份"10淘宝网+技术类+笔试.rar"压缩包文件,显然是针对淘宝网技术类岗位的...
题目.pdf可能包含了这些领域的多项选择题、填空题、编程题或案例分析题,涵盖的内容可能包括但不限于: 1. 数据结构:链表、栈、队列、树(二叉树、平衡树、堆)、图等基础数据结构的理解和应用。 2. 算法:排序...
### 淘宝笔试资料 #### 2.1 广州站交互设计试题 - **重点考察**:设计思维、用户体验设计能力。 #### 2.2-2.10 笔试经验分享 - **涵盖领域**:包括但不限于交互设计、软件开发、测试等方向。 - **考察内容**:编程...
- **技术类笔试题**:主要考查算法、编程基础、计算机网络等专业知识。 #### 六、阿里巴巴校园招聘面试经验 阿里巴巴的面试流程通常包括技术面试和综合面试两大部分。技术面试主要考查应聘者的技术能力和专业知识...
【阿里巴巴2015暑期实习运营专员笔试题详解】 阿里巴巴作为全球领先的互联网巨头,其运营专员的实习生招聘标准自然严谨且具有挑战性。通过提供的笔试题,我们可以深入了解阿里巴巴对运营人才的能力要求,主要包括...
比如,文件中两次出现“2014 7、”,可能是指2014年的第七题,考生应根据上下文和其他参考材料推断出完整的题目内容,并结合自己的专业知识进行解答。 此外,文件中提到的“淘宝上100多块钱卖的也只有5年”,说明这...